다형성이란?
:: 여러가지 형태를 가질 수 있는 능력
조상클래스의 타입의 참조변수로 자손클래스의 인터스턴스를 참조할 수 있도록!
class Tv{
boolean power;
int channel;
void power() {power = !power;
}
void channelUp() { ++channel;
}
void channelDown(){ --channel;}
}
class SmarTv extends Tv{
String text;
void caption() {~~~~;}
}
Tv 클래스와 SmartTv는 서로 상속관계로 있으므로, 아래와 같은 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조 가능
Tv t = new SmartTv();
다시 한버 정리해보면 아래와 같은 코드를 이해할 수 있다.
- 아래의 코드는 SmartTv인스턴 스를 2개 생성하고, 참조변수 t 와 s 가 생성된 인스턴스(SmartTv)를 하나씩 참조
SmartTv s = new SmartTv(); // 참조변수와 인스턴스의 타입 일치
Tv t = new SmartTv(); // 조상타입 참조변수로 자손타입 인스턴스 참조
하지만 인스턴스가 SmartTv타입이라도,
참조변수 t는 SmartTv인스턴스의 모든 멤버를 사용 할 수가 없다.
(왜? Tv클래스에는 기능이 없으니까)
둘다 같은타입의 인스턴스지만 참조변수의 타입에 따라서 사용할 수있는 멤버의 개수가 달라진다.
SmartTv s = new Tv(); 는 에러!!!!
실제 인스턴스의 Tv의 멤버 개수보다 참조변수 s의 멤버개수가 더 많기 때문!
'자바(Java)' 카테고리의 다른 글
자바 Java 객체지향이란무엇일까? #2 객체배열 클래스 인스턴스변수 (0) | 2023.06.03 |
---|---|
[Java 문법 종합반] 기초언어 2주차 ~2-16 (0) | 2023.05.25 |
[Java 문법 종합반] 기초언어 2주차 (2-10) (0) | 2023.05.23 |
[Java 문법 종합반] 기초언어 1주차 (0) | 2023.05.23 |
자바(java) 인자(argument) / 매개변수(parameter) 차이 (0) | 2023.05.12 |