이 기사는 주로 아래에 자세히 설명 된대로 Java의 클래스의 능동적이고 수동적 인 인용을 연구합니다.
적극적인 인용 , 다음은 활발한 인용의 5 가지 시나리오가 있습니다.
.
2. 반사
3. 서브 클래스가 초기화되기 전에 부모 클래스가 초기화됩니다.
4. 기본 메소드를 포함하는 클래스는 가상 머신이 시작될 때 초기화됩니다.
5. JDK의 동적 언어 지원을 사용할 때 (알 수 없음)
수동적 인용문 :
클래스 슈퍼 클래스 {static {syso ( "Super Init"); } public static int value = 123;} 클래스 서브 클래스 확장 수퍼 클래스 {static {syso ( "sub init")}} public static final hw = "helloworld";} public class untinitialization {main () {syso (subclass.value) // superclass [] = 새로운 수퍼 클래스 [10] //syso(ConstantClass.hw);}} 출력 : super init 123 이 필드를 직접 정의하는 클래스 만 정적 필드에 대한 액세스를 위해 초기화됩니다. 서브 클래스는 초기화되지 않습니다. 첫 번째 주석은 취소되고 출력없이 실행됩니다. 배열 정의를 통한 참조 클래스는 클래스의 초기화를 트리거하지 않지만 가상 머신에 의해 자동으로 생성되고 객체 클래스에서 상속되는 서브 클래스의 초기화를 초기화합니다. 이 클래스는 배열을 나타냅니다. 배열의 속성 및 방법은이 클래스에서 구현됩니다 (길이 속성 및 클론 ()). 두 번째 주석이 취소 된 후에는 출력이 없습니다. 컴파일 중에 상수는 일정한 풀에 배치됩니다. ConstantClass.hw는 편집 중에 공명 클래스의 일정한 풀에 배치됩니다. 공언화는 공증에 대한 상징적 인 참조가 없다.
위의 내용은 Java 수업에 대한 적극적이고 수동적 인 인용에 대한이 기사의 간단한 토론에 관한 것이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!