달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
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
:
Posted by НooпeУ


Code Start Code End