1. 다형성
- 여러 가지 형태를 가질 수 있는 능력
- 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함
- 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 함
Ex)
class Tv { }
class CpationTv extends Tv { }
Tv t = new CaptionTv();
- 조상 타입으로 참조하면 자손타입 인스턴스의 모든 멤버를 사용할 수 없음
(자손 타입에서 선언한 멤버들은 사용불가)
- 자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 불가능함
(실제 인스턴스인 조상타입의 인스턴스보다 참조변수가 사용할 수 있는 멤버 개수가 더 많기 때문)
- 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 함
2. 참조변수의 형변환
- 참조변수는 서로 상속관계에 있는 클래스 사이에서만 형변환이 가능함
(간접조상으로도 형변환 가능)
- 자손타입 -> 조상타입(Up-casting): 형변환 생략가능
- 자손타입 <- 조상타입(Down-casting): 형변환 생략불가
Ex1)
Car car = null;
FireEngine fe = new FireEngine();
FirEngine fe2 = null;
car = fe;
fe2 = (FireEngine)car;
Ex2)
Car car = new Car();
FireEngine fe = new FireEngine();
fe = (FireEngine)car;
3. instanceof연산자
- 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용
- boolean값을 리턴하며, true 리턴 시 참조변수가 검사한 타입으로 형변환이 가능하다는 것을 의미
Ex)
if(c instanceof FireEngine) {
console.log("OK");
}
java의 정석 chapter7