본문 바로가기
Today I learned

4. 상속과 캐스팅

by soheemon 2018. 9. 16.


4. 상속과 캐스팅


상속과 생성자

- 서브 클래스의 인스턴스가 생성될 때, 슈퍼클래스의 생성자가 먼저 실행 된 후, 서브 클래스의 생성자가 실행된다.[각주:1]

- 서브클래스의 인스턴스가 생성되면 서브클래스의 생성자 중 하나가 실행되고, 슈퍼클래스의 생성자 중 하나가 실행된다.[각주:2]


상속과 생성자(2)

- (특별한 지시가 없으면) 서브클래스의 생성자가 기본 생성자이든 매개변수를 가진 생성자이든 슈퍼 클래스의 생성자로 기본 생성자가 실행된다.
- 만약 서브클래스 B에서 B()로 생성자를실행했는데, 슈퍼클래스 A에 A(int input)만 존재할 경우 컴파일 에러가 발생하게 된다[각주:3][각주:4]


super()


- 서브클래스의 생성자에서 슈퍼클래스 생성자의 호출을 명시적으로 선택하는 키워드이다.

- super()는 슈퍼클래스 생성자의 호출을 의미한다.
- 매개변수가 있다면 괄호안에 매개변수를 적는다.

- super()의 사용은 반드시 생성자 코드의 첫 라인에 와야 한다.

캐스팅

- toString()은 기본적으로 만들어져 있는 메소드.

- 생성되어있는 메소드는 Bold체로 표시된다.

- 왼쪽마우스 클릭 → Navigator → Go To Declation으로 로직을 찾아 갈 수 있다





Protected 변수와 method는 URL diagram에서 #심볼로 표시 될 수 있다.







기본적으로 서브클래스의 생성자는 슈퍼클래스의 기본 생성자를 실행한다.








  1. 예를들어, 상속관계에 있는 3개의 클래스가 있다고 했을때, 가장먼저 최하위 계층의 C생성자가 호출되고, 그 다음으로 B, A가 호출된다. 하지만 생성자 실행은 반대로 A,B,C순으로 실행되게 된다. [본문으로]
  2. 하지만 여기서 서브 클래스의 생성자를 실행했을때, 슈퍼클래스의 여러 생성자중 생성자를 실행할것인가 라는 문제가 발생한다. [본문으로]
  3. Implitcit super constructor A() is undefined. [본문으로]
  4. 생성자가 선언되지 않은 경우에만 기본생성자가 생성되기 때문이다. [본문으로]

'Today I learned' 카테고리의 다른 글

JAVA 2주차 강의 정리  (0) 2018.10.24
JAVA 1주차 강의정리  (0) 2018.10.14
3. 캡슐화 방법, 상속  (0) 2018.09.16
2. Class개념과 기본적인 Java Programming  (0) 2018.09.16
객체지향프로그래밍  (1) 2018.09.15

댓글