>  기사  >  Java  >  Java의 클래스 로딩 순서에 대한 자세한 설명

Java의 클래스 로딩 순서에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-13 09:10:111152검색

이 글에서는 Java 클래스의 로딩 순서를 소개합니다.

1. 처음에는 정적 초기화 블록, 정적 멤버 변수 및 정적 메서드가 한 번 초기화됩니다.

2. 클래스의 인스턴스는 새 메서드가 실행될 때만 생성됩니다.

3. 클래스 인스턴스 생성 과정: 부모-자식 상속 관계에 따라 초기화가 진행됩니다. 먼저 부모 클래스의 초기화 블록 부분을 실행한 후. 상위 클래스의 생성 메서드를 실행한 다음 이 클래스에서 상속한 하위 클래스의 초기화 블록을 실행합니다. 마지막으로 하위 클래스의 생성 메서드

가 있습니다. 클래스 인스턴스가 파괴되면 먼저 하위 클래스 부분을 파괴한 다음 상위 클래스 부분을 파괴합니다

<span style="font-size: 14px;">public class Parent<br/>{<br/> public static int t = parentStaticMethod2();<br/> {<br/> System.out.println("父类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("父类静态初始化块");<br/> }<br/> public Parent()<br/> {<br/> System.out.println("父类的构造方法");<br/> }<br/> public static int parentStaticMethod()<br/> {<br/> System.out.println("父类类的静态方法");<br/> return 10;<br/> }<br/> public static int parentStaticMethod2()<br/> {<br/> System.out.println("父类的静态方法2");<br/> return 9;<br/> }<br/> <br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁父类");<br/> }<br/> <br/>}<br/>public class Child extends Parent<br/>{<br/> {<br/> System.out.println("子类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("子类静态初始化块");<br/> }<br/> public Child()<br/> {<br/> System.out.println("子类的构造方法");<br/> }<br/> public static int childStaticMethod()<br/> {<br/> System.out.println("子类的静态方法");<br/> return 1000;<br/> }<br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁子类");<br/> }<br/>}<br/>public class Test<br/>{<br/> <br/> public static void main(String[] args)<br/> {<br/> // TODO Auto-generated method stub<br/> Parent.parentStaticMethod();<br/>// Child child = new Child();<br/> <br/> }<br/><br/>}<br/></span>

출력

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类类的静态方法<br/></span>

클래스의 정적 메소드는 처음 호출될 때 로드되며, 클래스의 정적 멤버는 나타나는 순서대로 Loaded 클래스에 눌러집니다. 정적 메소드 2가 호출되면

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类的静态方法2<br/></span>

Parent.parentStaticMethod()를 주석 처리

주석 제거 Child child = new Child( );

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>子类静态初始化块<br/>父类非静态初始化块<br/>父类的构造方法<br/>子类非静态初始化块<br/>子类的构造方法<br/></span>

요약

위 내용은 이 기사의 전체 내용입니다. 모두의 공부나 업무에 도움이 필요하신 경우, 궁금한 사항이 있으시면 메시지를 남겨주시면 소통 가능합니다.

Java에서 클래스 로딩 순서에 대한 더 자세한 글은 PHP 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.