자바 의 각 구성원 변수 초기 화 프로 세 스
4438 단어 Java
최근 Thinking in 자바 를 보고 있 습 니 다. 클래스 의 각 멤버 초기 화 에 대해 관심 이 없 었 습 니 다. 여기에 기록 하 십시오. 오류 가 있 으 면 지적 하 십시오.
1. 계승 과 초기 화
계승 을 포함 한 초기 화 전 과정 을 이해 하여 발생 하 는 모든 것 에 대해 전면적 인 파악 을 하 는 것 이 유익 하 다.
자바 에 서 는 모든 종류의 컴 파일 코드 가 독립 된 파일 (즉 클 라 스 파일) 에 존재 합 니 다. 이 파일 은 프로그램 코드 를 사용 해 야 불 러 옵 니 다.일반적으로 "클래스 의 코드 는 처음 사용 할 때 만 불 러 옵 니 다". 이것 은 보통 다음 두 가지 상황 을 포함 합 니 다.
쓸데없는 말 은 그만 하고 상세 하 게 는 다음 과 같다.
public class Base {
//static
private static int I1 = printInt("Init I1");
//
private int i = 11;
protected int j;
public Base(){
System.out.println("Base constructor");
System.out.println("i="+i+" j="+j);
j = 40;
}
static int printInt(String str) {
System.out.println(str);
return 10;
}
}
public class Son extends Base{
private static int I2 = printInt("Init I2");
public Son() {
System.out.println("Son constructor");
System.out.println("I2="+I2+" j= "+j);
}
public static void main(String[] args) {
Son son = new Son();
}
}
이 코드 를 보고 출력 이 뭐라고 생각 하 세 요?
먼저 답 을 주 고 분석 하 겠 습 니 다.
Init I1
Init I2
Base constructor
i=11 j=0
Son constructor
I2=10 j= 40
분석:
프로그램 은 먼저 Son 류 의 main 방법 에 착안 하여 로 더 를 시작 하고 Son 컴 파일 코드 (즉 class 파일) 를 찾 습 니 다.로 딩 중 Son 과 부모 클래스 Base 를 발견 하고 Base 의 컴 파일 코드 (Base 와 부모 클래스 가 있 으 면 계속 위로 실행) 를 계속 불 러 옵 니 다. 그 다음 에 기본 클래스 의 static 필드 가 초기 화 되 었 습 니 다. 하위 클래스 는 기본 클래스 의 구성원 이 올 바 르 게 초기 화 될 수 있 기 때문에 발생 했 습 니 다
Init I1
. 그리고 Son, Son 류 의 static 필드 로 내 려 가 초기 화 되 었 습 니 다.그래서 Init I2
이 발생 했 습 니 다. 이 모든 필요 한 클래스 로 딩 이 완료 되면 대상 을 초기 화 할 수 있 습 니 다.Son son = new Son()
이 코드 를 보고 Son 의 구조 기 를 호출 하려 고 합 니 다. 우 리 는 계승 관계 에서 하위 구조 기 에서 슈퍼 () 를 호출 할 것 이라는 것 을 알 고 있 습 니 다. 물론 여 기 는 암시 적 호출 입 니 다.이렇게 하면 다시 부모 클래스 로 돌아 갑 니 다. 그러나 구조 기 를 완성 하기 전에 부모 클래스 (Base) 의 모든 일반 필드 (즉, static 필드 가 아 닌) 가 자신의 초기 화 를 완성 하기 때문에 출력 i=11 j=0
을 볼 수 있 습 니 다. 이 어 하위 클래스 (Son) 에 와 서 부모 클래스 의 실행 과정 과 마찬가지 로 일반 필드 의 초기 화 를 먼저 완성 한 다음 구조 기 방법 을 호출 합 니 다.많은 말 을 했 는데 전체적인 절 차 는 다음 과 같다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.