JAVA

[JAVA] 기초문법 - 상속과 다형성(2)

탱이나라 2021. 9. 28. 01:15

접근 제한자 정리

상속에서 클래스 생성 과정

super은 상위클래스를 가르킴.

모든 자바 클래스의 최상위 클래스는 object 클래스이다.

상속에서 메모리 상태

만약에 상위클래스에 private 변수가 있다면, 메모리에 생성은 되지만 하위 클래스에서 접근 할 수가 없는 것.

상위 클래스의 생성자가 디폴트가 아닌 매개변수가 있는 생성자인경우.

예시)

이런경우 하위클래스에서 오류가 발생함. ㅡ> 컴파일러가 자동으로 super()키워드를 삽입해주지만 super()은 디폴트 생성자를 의미하기 때문.

즉, 하위클래스 생성자에서 super(매개변수); 를 명시적으로 호출해야함.

super 예약어

상위 클래스로의 묵시적 형 변환(업캐스팅)

모든 하위 클래스는 상위클래스의 일종이다. 따라서 업캐스팅이 가능하다. 하지만 하위 클래스라고 해서 상위클래스인것은 아니다. 즉 하위 클래스는 상위클래스의 특성을 내포하고 있다.

단, 업캐스팅이 발생했을때, 하위클래스만 가지고 있는 멤버변수 및 메서드를 사용할 순 없다.

하위클래스의 생성자가 호출되었기 때문에 메모리에 하위클래스의 멤버변수가 생성되지만, 타입이 상위클래스 이기 때문에 사용 할 수는 없다.