본문 바로가기
Language/Java

Constructor chaining(생성자 연쇄)

by 만땅땅 2020. 6. 21.

클래스를 생성했을 때 생성자를 따로 설정하지 않아도 기본적으로 default 생성자가 super();를 호출

super();를 호출함으로서 부모 클래스의 생성자를 먼저 실행

- 그 이유는 객체가 제 모양을 갖추려면 그 객체의 부모클래스의 일부도 제 모양을 갖춰야 하기 때문

- 따라서 상속 트리에 있는 모든 클래스의 인스턴스 변수가 선언되고 초기화되어야 함

 

a~z까지의 클래스가 있을 때, a-b, b-c, ..., y-z 로 상속을 받는다면

z클래스의 default 생성자의 super();는 a-y까지의 생성자를 우선 실행

- 최상위 클래스인 Object 클래스에 다다르면 종료

 

따라서 new z(); 하면

a-y까지 모두 생성한 후 z 클래스 실행

 

+ abstract 클래스도 부모클래스

구현한 하위 클래스가 인스턴스를 만들면 abstract 클래스도 그 생성자가 실행됨

(기본적으로 추상 클래스는 new 키워드를 사용할 수 없음)

 

 

출처 : 

medium.com/@byeonguk92/자바-디폴트생성자-생성자-연쇄호출-bc0d483aaa87

blog.daum.net/ibbunii/17

'Language > Java' 카테고리의 다른 글

Serializable, Externalizable  (0) 2020.04.07