자바 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 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