2010. 7. 29. 13:32
JAVA - polymorphism JAVA이야기2010. 7. 29. 13:32
public class Taxi extends Car{
public Taxi(){
System.out.println("TAXI");
}
public int i = 100;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public Taxi(int i, int j){
super();
System.out.println("TAXI int int");
}
public void run(){
super.run();
}
public static void main(String[] args) {
Car c = new Taxi();
Car d = new Taxi(2,3);
Car e = new Car();
Taxi t = new Taxi();
Taxi t2 = (Taxi)new Car();
if(c instanceof Taxi){
System.out.println("TAXI");
}
if(e instanceof Car){
System.out.println("CAR");
}
c.run();
System.out.println(c.getI());
System.out.println(d.getI());
System.out.println(t.getI());
// System.out.println(t2.getI());
}
}
여기서 궁금한 점. 강제 형 변환을 했는데 컴파일 오류가 안나고 , 런타임 에러(ClassCastException)가 나는 것일까?
또
System.out.println(c.getI());
System.out.println(d.getI());
System.out.println(t.getI());
호출할 때, 왜 100이 출력될까. c의 타입은 Car여서 Car클래스의 i값에 접근하는 줄 알고 있는데, 왜 Taxi()의 인스턴스에 접근해서 100을 출력할까....
'JAVA이야기' 카테고리의 다른 글
Thread - 동기화 기법 (0) | 2010.08.09 |
---|---|
Thread - API (0) | 2010.08.06 |
10진수를 2진수로 만들어서 요일과 대치하기 (0) | 2010.07.23 |
대여할 책 (0) | 2010.04.24 |
'10.03.29 story (0) | 2010.04.01 |