Java
Java 다형성(polymorphism)
늘이
2022. 12. 26. 18:56
다형성(多形性, polymorphism)
- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
객체(≒인스턴스) 타입과 참조 변수 타입이 일치할 때와 일치하지 않은 경우?
// 일반적인 케이스, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 일치
// 자손 타입(SmartTv) 참조 변수(s)와 객체 타입(SmartTv) 일치
SmartTv s = new SmartTv();
// 하지만 타입이 불일치해도 됨, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 불일치
// 조상 타입(Tv) 참조 변수(t)와 자손 타입(SmartTv) 불일치
Tv t = new SmartTv();
// 타입이 불일치하면 안되는 케이스
// Error, 자손 타입(SmartTv) 참조 변수(s)로 조상 타입(Tv)의 객체를 가리킬 수 없음
SmartTv s = new Tv();
📝 참조 변수 타입은 인스턴스 타입과 일치하는 것이 보통이지만 일치 하지 않을 수도 있음
📝 참조 변수가 조상 타입일 때와 자손 타입일 때 차이는 참조변수로 사용할 수 있는 멤버의 개수가 달라진다는 것
📝 자손 타입의 참조 변수로 조상 타입의 객체를 가리키는 것은 불가!!!