Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 클래스가 추상 클래스와 최종 클래스를 모두 사용할 수 없는 이유는 무엇입니까?

<시간/>

추상 클래스

0개 이상의 추상 메소드를 포함하는 클래스를 추상 클래스라고 합니다. 하나 이상의 추상 메서드가 포함되어 있으면 추상으로 선언해야 합니다.

추상 클래스에서 구체적인 메서드를 사용하려면 클래스를 상속하고 추상 메서드에 구현을 제공해야 합니다(있는 경우). 그런 다음 하위 클래스 개체를 사용하여 필요한 메서드를 호출할 수 있습니다.

예시

다음 Java 예제에서 추상 클래스 MyClass에는 이름 표시가 있는 구체적인 메서드가 포함되어 있습니다.

다른 클래스(AbstractClassExample)에서 MyClass 클래스를 상속하고 하위 클래스 개체를 사용하여 구체적인 메서드 표시를 호출합니다.

abstract class MyClass {
   public void display() {
      System.out.println("This is a method of abstract class");
   }
}
public class AbstractClassExample extends MyClass {
   public static void main(String args[]) {
      new AbstractClassExample().display();
   }
}

출력

This is a method of abstract class

최종 수업

확장할 수 없는 클래스를 final로 선언하면 final 클래스를 확장하려고 할 때 "최종 SuperClass에서 상속할 수 없음"이라는 컴파일 시간 오류가 생성됩니다.

예시

다음 Java 프로그램에는 SuperClass라는 이름의 최종 클래스가 있습니다. 그리고 우리는 그것을 다른 클래스(SubClass)에서 내재하려고 합니다.

final class SuperClass {
   public void display() {
      System.out.println("This is a method of the superclass");
   }
}

컴파일 시간 오류

컴파일 시 이 프로그램은 아래와 같이 컴파일 오류를 생성합니다. -

SubClass.java:7: error: cannot inherit from final SuperClass
public class SubClass extends SuperClass{
                              ^
1 error

추상 및 최종

클래스 추상을 선언했다면 그것을 사용하기 위해서는 반드시 확장해야 하고, final 클래스를 선언했다면 확장할 수 없다. 둘 다 서로 모순되기 때문에 그렇게 하면 추상 클래스와 final 클래스를 동시에 선언할 수 없기 때문에 컴파일 타임 오류가 발생한다. 생성됩니다.

예시

public final abstract class Example {
   public void sample() {
   }
}

컴파일 시간 오류

Example.java:1: error: illegal combination of modifiers: abstract and final

public final abstract class Example {
                      ^
1 error