[Java 소스] 안전한 하향 캐스팅 예
//기반 클래스
public abstract class Musician {
public abstract void Play();
}
//파생 클래스 Drummer
public class Drummer extends Musician {
@Override
public void Play() {
System.out.println("두두둥");
}
}
//파생 클래스 Pianist
public class Pianist extends Musician {
@Override
public void Play() {
System.out.println("딩동댕");
}
public void Tunning(){
System.out.println("도도 레레 미미 파파 솔솔");
}
}
//안전한 하향 캐스팅 예
public class Program {
static void foo(Musician musician){
if(musician instanceof Pianist){
Pianist pianist = (Pianist)musician;
pianist.Tunning();
}
musician.Play();
}
public static void main(String[] args){
Musician musician = new Drummer();
foo(musician);
musician = new Pianist();
foo(musician);
}
}
실행 결과
두두둥
도도 레레 미미 파파 솔솔
딩동댕
본문
[Java] 5. 5 안전한 하향 캐스팅을 위한 예약어 instanceof
학습에 도움이 되시면 ebook을 구입(판매가 3000원, ebook)하여 소장하시면 감사하겠습니다.
'Java > 디딤돌 Java 언어 Part1' 카테고리의 다른 글
[Java 소스] Object 클래스 hashCode 메서드 재정의 (0) | 2016.12.22 |
---|---|
[Java 소스] Object 클래스 equals 메서드 재정의 (0) | 2016.12.22 |
[Java 소스] 묵시적 하향 캐스팅 오류 예 (0) | 2016.12.13 |
[Java 소스] 인터페이스 다중 상속 예 (0) | 2016.12.13 |
[Java 소스] 계층화 인터페이스 예 (0) | 2016.12.13 |