인터뷰 중에 추상 클래스를 인스턴스화하는 것이 가능한지 질문을 받았습니다. 전통적으로는 "아니요"라고 대답했습니다. 그러나 면접관은 그것이 가능하다고 말하여 놀랐습니다.
이를 입증하려면 다음 코드를 고려하십시오.
abstract class my { public void mymethod() { System.out.print("Abstract"); } } class poly { public static void main(String a[]) { my m = new my() {}; m.mymethod(); } }
my의 추상 수정자에도 불구하고 다음을 사용하여 해당 인스턴스를 생성할 수 있습니다. 익명의 하위 클래스. 본질적으로 즉석에서 하위 클래스를 생성하고 해당 참조를 추상 클래스 참조 m에 할당합니다.
JLS(Java 언어 사양)에 따르면:
"클래스 인스턴스 생성 표현식이 클래스 본문으로 끝나는 경우
인스턴스화되는 클래스는 익명 클래스입니다."
따라서 이 경우 인스턴스화되는 클래스는 다음과 같습니다. 내 것이 아니라 익명의 하위 클래스입니다.
이 동작은 코드를 컴파일하고 생성된 클래스 파일을 확인하여 확인할 수 있습니다. 런타임에 생성된 익명 하위 클래스에 해당하는 Poly$1.class라는 새 클래스 파일을 볼 수 있습니다.
따라서 추상 클래스를 직접 인스턴스화할 수는 없지만 익명 하위 클래스.
위 내용은 Java에서 추상 클래스를 인스턴스화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!