본문 바로가기

Java

Java 다형성(polymorphism)

 

다형성(多形性, polymorphism)
- 여러 가지 형태를 가질 수 있는 능력 
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것

 


객체(≒인스턴스) 타입과 참조 변수 타입이 일치할 때와 일치하지 않은 경우?

// 일반적인 케이스, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 일치
// 자손 타입(SmartTv) 참조 변수(s)와 객체 타입(SmartTv) 일치
SmartTv s = new SmartTv(); 


// 하지만 타입이 불일치해도 됨, 객체 타입(≒ 인스턴스 타입)과 참조 변수 타입 불일치
// 조상 타입(Tv) 참조 변수(t)와 자손 타입(SmartTv) 불일치
Tv t = new SmartTv();


// 타입이 불일치하면 안되는 케이스
// Error, 자손 타입(SmartTv) 참조 변수(s)로 조상 타입(Tv)의 객체를 가리킬 수 없음
SmartTv s = new Tv();



📝 참조 변수 타입은 인스턴스 타입과 일치하는 것이 보통이지만 일치 하지 않을 수도 있음
📝 참조 변수가 조상 타입일 때와 자손 타입일 때 차이는 참조변수로 사용할 수 있는 멤버의 개수가 달라진다는 것
📝 자손 타입의 참조 변수로 조상 타입의 객체를 가리키는 것은 불가!!!


'Java' 카테고리의 다른 글

Java 매개변수의 다형성  (0) 2022.12.27
Java 참조변수의 형변환과 instanceof  (0) 2022.12.27
Java 제어자(modifier)  (0) 2022.12.26
Java import문  (0) 2022.12.26
Java 패키지(package)  (0) 2022.12.26