Java
[Java] Polymorphism
wwxs
2024. 9. 9. 17:41
Polymorphism (다형성)
- 많은 형태를 가질 수 있는 능력
- 하나의 객체가 여러 타입의 인스턴스로 취급될 수 있는 특성
- 상속 + 메서드 오버라이딩 + 클래스 타입 변환
instanceof 연산자
- 참조변수값 instanceof 타입(클래스명)
- 해당 객체가 특정 클래스의 인스턴스인지 또는 그 클래스를 상속받은 자식 클래스의 인스턴스인지 확인
(예제 코드)
더보기
class Vehicle {
void display() {
System.out.println("운송 수단 입니다.");
}
}
class Bus extends Vehicle {
@Override
void display() {
System.out.println("버스를 타고 갑니다");
}
}
class Subway extends Vehicle {
@Override
void display() {
System.out.println("지하철을 타고 갑니다");
}
}
public class B_Polymorphism {
public static void main(String[] args) {
// 다형성 적용
// : 부모 클래스 타입의 참조 변수로 자식 클래스 객체를 참조
Vehicle myVehicle = new Vehicle(); // Vehicle 객체
Vehicle myBus = new Bus(); // Bus 객체(자동 타입 변환)
Vehicle mySubway = new Subway(); // Subway 객체(자동 타입 변환)
if(myBus instanceof Vehicle) {
// myBus 객체가 Vehicle의 인스턴스 이거나
// , 해당 클래스를 상속받은 클래스의 인스턴스 인 경우
myBus.display();
}
if(myVehicle instanceof Bus) {
System.out.println("운송수단은 버스입니다.");
} else {
System.out.println("운송수단은 버스가 아닙니다");
}
// cf) instanceof 연선자 계산식에서 true의 결과값이 출력되면
// > 해당 클래스 타입으로 형 변환이 가능
// > 형 변환 이전에는 instanceof 연선자를 통해서 오류 방지
}
}