super와 super()
Super 는 부모꺼다!!!!!!
This는 클래스 자신의 객체
Super 부모의 객체
왼쪽에는 abc()함수가 두개다.
부모꺼, 자식꺼
왼쪽 -> This는 자식에서 썼으니까 자기자신의 abc()를 부른다
오른쪽 -> super 부모꺼 가져옴.
This 는 늘 생략되어있었다(컴파일러가 붙여줬었음)
super.init() ==> 부모꺼 코드 100줄 가져옴
부모가 가지고 있는 코드에
새로운 코드 한 줄만 추가하고 싶어
This ==> 자신의 생성자를 호출
Super ==> 부모 클래스의 생성자를 호출
성질
- Super는 생성자 내부에서 사용 가능!!!
- 첫 줄에 위치
- 자식클래스 생성자의 첫 줄에는 this(), super()가 포함
생성자가 여러 개 일 때 어떻게 다른 생성자를 부르는 것인가?
호출 시 매개변수 개수가
매치되는 생성자를 불러온다.
- B생성자 호출
- Super로 A생성자 호출
- b 는 B생성자를 가리키고… A생성자가 내부에 있다
자식 클래스에는 무조건 this(), super() 가 온다!!!
A() 기본 생성자가 없음
그래서 오류남 |
|
new B(); 인 경우
B 생성자 2 B 생성자 1 순으로 출력된다. |
|
new B(3); 인 경우
super()가 생략되어 있어서 A 생성자2 A 생성자1 B 생성자 2 |
'java > 자바' 카테고리의 다른 글
[Chap12] - 01 추상클래스 (0) | 2022.09.25 |
---|---|
[Chap11] - 자바 제어자 #2 (final, abstract) (0) | 2022.09.25 |
chap[10-4] 필드와 static 멤버 (필드_메서드)의 중복 (0) | 2022.09.11 |
chap[10-3] 메서드 오버라이딩 (0) | 2022.09.11 |
chap[10-2] 객체의 타입변환 (0) | 2022.09.11 |