접근 제한자 정리
상속에서 클래스 생성 과정
super은 상위클래스를 가르킴.
모든 자바 클래스의 최상위 클래스는 object 클래스이다.
상속에서 메모리 상태
만약에 상위클래스에 private 변수가 있다면, 메모리에 생성은 되지만 하위 클래스에서 접근 할 수가 없는 것.
상위 클래스의 생성자가 디폴트가 아닌 매개변수가 있는 생성자인경우.
예시)
이런경우 하위클래스에서 오류가 발생함. ㅡ> 컴파일러가 자동으로 super()키워드를 삽입해주지만 super()은 디폴트 생성자를 의미하기 때문.
즉, 하위클래스 생성자에서 super(매개변수); 를 명시적으로 호출해야함.
super 예약어
상위 클래스로의 묵시적 형 변환(업캐스팅)
모든 하위 클래스는 상위클래스의 일종이다. 따라서 업캐스팅이 가능하다. 하지만 하위 클래스라고 해서 상위클래스인것은 아니다. 즉 하위 클래스는 상위클래스의 특성을 내포하고 있다.
단, 업캐스팅이 발생했을때, 하위클래스만 가지고 있는 멤버변수 및 메서드를 사용할 순 없다.
하위클래스의 생성자가 호출되었기 때문에 메모리에 하위클래스의 멤버변수가 생성되지만, 타입이 상위클래스 이기 때문에 사용 할 수는 없다.
'JAVA' 카테고리의 다른 글
[JAVA] 기초문법 - 다형성 활용과 다운캐스팅 (0) | 2021.10.03 |
---|---|
[JAVA] 기초문법 - 오버라이딩과 다형성(3) (0) | 2021.09.28 |
[JAVA] 기초문법 - 상속과 다형성(1) (0) | 2021.09.28 |
[JAVA] 기초문법 - 디버깅 (0) | 2021.09.28 |
[JAVA] 기초문법 - 배열과 ArrayList(4) (0) | 2021.09.28 |