클래스 로더 로드 순서

8866 단어 JVM
선행 코드:
public class Parent {

    {
        System.out.println("Parent      ");
    }

    static {
        System.out.println("Parent      ");
    }

    public Parent() {
        System.out.println("Parent      ");
    }

    public static void staticMethod1() {
        System.out.println("Parent      1");
    }

    public static void staticMethod2() {
        System.out.println("Parent      2");
    }
}

테스트 클래스:
    public static void main(String[] args) {
        Parent.staticMethod1();
        Parent.staticMethod2();
        Parent parent = new Parent();
    }

결과:
Parent      
Parent      1
Parent      2
Parent      
Parent      

자, 하위 클래스:
public class Child extends Parent {
    {
        System.out.println("Child      ");
    }

    static {
        System.out.println("Child      ");
    }

    public Child() {
        System.out.println("Child      ");
    }

    public static void staticMethod1() {
        System.out.println("Child      1");
    }

    public static void staticMethod2() {
        System.out.println("Child      2");
    }
}

테스트:
    public static void main(String[] args) {
        Child.staticMethod1();
        Child.staticMethod2();
        Child child = new Child();
    }

결과:
Parent      
Child      
Child      1
Child      2
Parent      
Parent      
Child      
Child      

로드 순서: 상위 클래스의 정적 코드 블록 – > 하위 클래스의 정적 코드 블록 -> 상위 클래스의 일반 코드 블록 -> 상위 클래스의 기본 구조자 -> 하위 클래스의 일반 코드 블록 -> 하위 클래스의 구조자
하위 클래스 정적 방법은 하위 클래스 정적 코드 블록에 불러온 후 하위 클래스의 일반 코드 블록 앞에

좋은 웹페이지 즐겨찾기