> Java > Java베이스 > 본문

Java에서 객체를 초기화하는 방법

王林
풀어 주다: 2019-11-20 16:33:55
원래의
4381명이 탐색했습니다.

Java에서 객체를 초기화하는 방법

1단계: 클래스 로드 초기화 전에 Java 객체가 로드되고 JVM에 Class 객체가 생성됩니다. 클래스를 로드하면 다음 작업이 수행되며 재귀적 설명은 아래와 같습니다.

클래스에 상위 클래스가 있는 경우 해당 상위 클래스를 먼저 로드하세요.

i 이 클래스의 정적 멤버 초기화

ii 이 클래스의 정적 코드 블록 실행

2단계: 객체 생성 클래스에 상위 클래스가 있는 경우 해당 상위 클래스의 객체는 객체를 생성할 때 먼저 생성되면 외부 레이어는 하위 클래스의 속성과 메서드를 래핑한 다음 하위 클래스의 참조를 반환합니다. 재귀적 설명은 다음과 같습니다.

클래스에 상위 클래스가 있는 경우 먼저 상위 클래스의 개체를 만듭니다.普I는 이러한 유형의 일반 멤버를 초기화합니다.

II 일반 코드 블록의 실행

III는 이러한 유형의 구조적 메소드를 호출합니다. 예:

멤버 변수로서의 객체

public class Info{    public Info(String s) {
        System.out.println(s);
    }
}
로그인 후 복사
E Father -in -law

public class Parent {
    public static Info info = new Info("Parent static member");      //静态成员
    public Info info2 = new Info("Parent common member");            //普通成员
    static {                                                         //静态代码块
        System.out.println("parent static block");
    }
    {                                                                //普通代码块
        System.out.println("parent common block");
    }
    public Parent() {                                                //父类构造方法
        System.out.println("Parent.Parent()");
    }
}
로그인 후 복사

Subclass

public class Child extends Parent{
    public static Info info = new Info("Child static member");       //静态成员
    public Info info2 = new Info("Child common member");             //普通成员
    static {                                                         //静态代码块
        System.out.println("Child static block");
    }
    {                                                                //普通代码块
        System.out.println("Child  common block");
    }
    public Child() {                                                 //子类构造方法
        System.out.println("Child.Child()");
    }
}
로그인 후 복사

다음 테스트 클래스 로딩 프로세스에서는 객체를 생성하지 않고 클래스를 직접 로드하고 서브클래스를 로드합니다.

public class InitObjectTest{
    public static void main(String[] args) {
        try{
            //Class.forName("Parent");
            Class.forName("Child");
        }catch(Exception e){
            
        }
        //System.out.println("=============== now , we create an Object below ===========");
        //new Parent();
    }
}
로그인 후 복사

테스트 결과:


테스트 결과는 다음과 일치합니다. 위에서 작성한 클래스를 로드하는 규칙은 상위 클래스 정적 멤버를 먼저 초기화한 다음 상위 클래스 정적 블록을 실행하고 하위 클래스 정적 멤버를 초기화하고 마지막으로 하위 클래스 정적 블록을 실행하는 것입니다. 클래스가 로드될 때 정적 멤버가 실제로 초기화되는 것을 볼 수 있습니다.


Note

: 클래스 로딩은 한 번만 수행되며, 객체를 생성한 후에는 더 이상 클래스가 로드되지 않습니다. 이것이 바로 정적 코드 블록이 한 번만 실행되는 이유입니다. Java에서 객체를 초기화하는 방법

추천 튜토리얼:

Java 입문 튜토리얼

위 내용은 Java에서 객체를 초기화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!