java 다형성(polymorphism) 질문이요.
아롱별
public class car { public int i = 10; public int geti() { return i; }
public void seti(int i) { this.i = i; }
public car(){ system.out.println(car); } public car(int i){ system.out.println(car int); } public void run() { system.out.println(1); }}
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을 출력할까....
아시는 분 댓글 달아주시면 감사하겠습니다.