본문 바로가기

JAVA

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

접근 제한자 정리

상속에서 클래스 생성 과정

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

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

상속에서 메모리 상태

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

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

예시)

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

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

super 예약어

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

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

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

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