본문 바로가기

java/자바

chap[10-5] super와 super()

super와 super()

Super 부모꺼다!!!!!!

 

This 클래스 자신의 객체

Super 부모의 객체

 

왼쪽에는 abc()함수가 두개다.

부모꺼, 자식꺼

왼쪽 -> This 자식에서 썼으니까 자기자신의 abc() 부른다

오른쪽 -> super 부모꺼 가져옴.

 

This 생략되어있었다(컴파일러가 붙여줬었음)

 

 

super.init() ==> 부모꺼 코드 100 가져옴

부모가 가지고 있는 코드에

새로운 코드 줄만 추가하고 싶어

 

 

This ==> 자신의 생성자를 호출

Super ==> 부모 클래스의 생성자를 호출

 

성질

  1. Super 생성자 내부에서 사용 가능!!!
  2. 줄에 위치
  3. 자식클래스 생성자의 줄에는 this(), super() 포함

 

생성자가 여러 어떻게 다른 생성자를 부르는 것인가?

호출 매개변수 개수가

매치되는 생성자를 불러온다.

 

 

 

 

  1. B생성자 호출
  2. Super A생성자 호출
  3. b B생성자를 가리키고… A생성자가 내부에 있다

 

자식 클래스에는 무조건 this(), super() 온다!!!

 

 

 

A() 기본 생성자가 없음
그래서 오류남
 
new B(); 경우
B 생성자 2
B 생성자 1
순으로 출력된다.
new B(3); 경우
super() 생략되어 있어서
A 생성자2
A 생성자1
B 생성자 2