상속과 다형성 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();

태그:

카테고리:

업데이트: