자바 java.lang.AbstractMethodError

Shiv Yadav 2023년10월12일
자바 java.lang.AbstractMethodError

이 기사는 java.lang.AbstractMethodError와 Java에서 이를 해결하는 방법을 이해하는 데 도움이 됩니다.

Java에서 java.lang.AbstractMethodError 오류 수정

때때로 우리 프로그램은 런타임에 AbstractMethodError를 경험할 수 있습니다. 이 실수에 익숙하지 않은 경우 문제의 원인을 찾는 데 시간이 걸릴 수 있습니다.

이 단원에서는 AbstractMethodError에 대해 자세히 살펴보겠습니다. AbstractMethodError가 무엇이고 언제 발생할 수 있는지 알아봅니다.

프로그램이 구현되지 않은 추상 메서드를 구성하려고 하면 AbstractMethodError 오류가 발생합니다. 추상 프로세스가 구현되지 않으면 컴파일러에서 오류가 발생한다는 것을 알고 있습니다. 결과적으로 애플리케이션이 생성되지 않습니다.

명령줄 javac 컴파일러를 사용하여 AbstractMethodError 예제를 구성합니다. 이 오류는 대부분의 IDE에서 금지하는 클래스가 독립적으로 컴파일될 때 생성됩니다.

아래 소스 코드에서 Abstract라는 Java 클래스를 만듭니다.

코드(Abstract.java):

public class Abstract {
  public void hello() {
    System.out.println("Hello! I belong to abstract class");
  }
}

이 클래스를 컴파일하려면 명령줄에서 다음 지침을 따르십시오.

javac Abstract.java

첫 번째 클래스가 컴파일되면 다음 소스 코드를 사용하여 AbstractClass라는 두 번째 클래스를 만듭니다.

코드(AbstractClass.java):

public class AbstractClass extends Abstract {
  public static void main(String[] args) {
    AbstractClass newabs = new AbstractClass();

    newabs.hello();
  }
}

이는 다음과 같이 어셈블하고 실행한 결과입니다.

javac AbstractClass.java
java AbstractClass

출력:

Hello! I belong to abstract class

모든 것이 괜찮더라도 hello() 함수를 추상으로 변경한 다음 AbstractClass를 수정하지 않고 Abstract를 다시 컴파일하면 어떻게 될까요? Abstract를 다음과 같이 변경하여 시도해 보십시오.

public abstract class Abstract {
  public abstract void hello();
}

이제 이 클래스를 쉽게 다시 컴파일할 수 있습니다. 그러나 AbstractClass를 실행하면 다음을 얻습니다.

Exception in thread "main" java.lang.AbstractMethodError: AbstractClass.hello()V
        at AbstractClass.main(AbstractClass.java:6)

기본 클래스 메서드가 추상으로 변경되어 결과적으로 기본 클래스가 수정되고 자식 클래스에서 필요한 수정이 이루어지지 않는다고 가정합니다. 이 경우 AbstractMethodError가 발생합니다(즉, 추상 메서드를 재정의함).

따라서 위의 예에서와 같이 프로그래머는 추상적이고 구현되지 않은 메서드를 사용합니다(추상성을 인식하지 않고). 기본 클래스만 변경되고 컴파일되기 때문에 그는 이 문제를 인식하지 못합니다.

이 상황에서는 AbstractClass에서 Abstract 메서드를 구현하는 것이 모두 필요합니다. AbstractMethodError 문제는 이렇게 하면 해결됩니다.

public class AbstractClass extends Abstract {
  public static void main(String[] args) {
    AbstractClass newabs = new AbstractClass();

    newabs.hello();
  }

  @Override
  public void hello() {
    System.out.println("Hello! I belong to abstract class");
  }
}

출력:

Hello! I belong to abstract class
작가: Shiv Yadav
Shiv Yadav avatar Shiv Yadav avatar

Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.

LinkedIn

관련 문장 - Java Error