자바는 해도 해도 복습은 필수인것 같다.
class Tv{ boolean power; int channel; void power(){ power = !power;} void channelUp() { ++channel;} void channelDown() { --channel;} } class SmartTv extends Tv{ String text; void caption() {/*내용생략*/} }
객체 생성을 했을 때 이렇게 했을 것이다
Tv t = new Tv(); SmartTv s = new SmartTv();
하지만
Tv t = new SmartTv();
자손 클래스를 조상 클래스로 다루는 것을 다형성이라고 말한다.
- 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 떄의 차이?
SmartTv s = new SmartTv();
참조변수, 인스턴스 타입 일치
모든 기능 사용 가능Tv t = new SmartTv();
조상 타입 참조변수로 자손 타입 인스턴스 참조
5개 기능만 사용 가능
부모의 참조 변수로 자식 클래스를 다루면 부모 클래스에 있는 멤버와 메서드들만 사용할 수 있습니다.
참조변수로 사용할 수 있는 멤버의 갯수가 달라집니다
- 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
Tv t = new SmartTv(); //허용 SmartTv s = new Tv(); //허용 안됨
실제 사용할 수 있는 멤버 갯수보다 참조하는 변수가 사용할수 있는 멤버갯수가 많으면 안된다.