Do It Java Day17
상속과 다형성 2
Tip. 접근 제한자 가시성
- private: 클래스 내에서만 사용 가능
- default: 같은 패키지의 클래스에서만 사용 가능
- protected: 같은 패키지 혹은 상속 받은 클래스만 사용 가능
- public: 모든 클래스에서 사용 가능
| 내부 클래스 | 동일 패키지 | 하위 클래스 | 외부 클래스 | |
|---|---|---|---|---|
| pirvate | O | X | X | X |
| default(생략) | O | O | X | X |
| protected | O | O | O | X |
| public | O | O | O | O |
1. 상속에서 클래스 생성 과정
- 하위 클래스의 인스턴스가 생성될 때 상위 클래스의 인스턴스가 먼저 생성된다
- 상위 클래스의 생성자가 호출된 후 하위 클래스의 생성자가 호출된다
- 하위 클래스의 생성자에서는 무조건 상위 클래스의 생성자가 호출되어야 한다
=> 따로 구현하지 않으면 컴파일러가 상위 클래스의 기본 생성자를 호출하는 super()를 넣어준다
- 만약 상위 클래스에 기본생성자가 없을 경우 하위 클래스는 명시적으로 상위 클래스를 호출해야 한다
super 예약어
-
하위 클래스가 상위 클래스에 접근할 때 사용
-
this가 자기 자신의 인스턴스 주소를 가지는 것처럼 super는 하위 클래스가 상위 클래스에 대한 주소를 가진다
2. 상위 클래스로의 묵시적 형 변환(업캐스팅)
- 상위 클래스 형으로 변수를 선언하고 하위 클래스 인스턴스를 생성할 수 있다
=> 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로 묵시적 형변환이 가능하다
ex)
상위클래스 변수 = new 하위클래스();
Object obj = new String();