為什么運(yùn)行的結(jié)果是 0 而不是 4?
以下代碼是分在三個class文件的。貼到一起
//創(chuàng)建一個Vehicle的父類
public class Vehicle {
int paasenger;
}
//創(chuàng)建一個Car的子類
public class Car extends Vehicle {
int passenger = 4;
}
//執(zhí)行
public class initial {
public static void main(String[] args) {
Vehicle obj1 = new Car();
System.out.println(obj1.passenger);
}
}
結(jié)果是0,而不是我想要的4。請問錯在哪里?
2016-04-30
對于屬性的重寫重寫, 我們需要看的是它被定義時的是屬于什么類類型, 那么它的值就是它的類類型的相應(yīng)屬性的值
所以obj.passenger的值是0, 因為obj1 的類型是Vehicle
如果在改寫initial為如下代碼:
public class Initial {
? ? public static void main(String[] args) {
? ? ? ? Vehicle obj1 = new Car();
? ? ? ? Car obj2 = new Car();
? ? ? ? System.out.println(obj1.passenger);
? ? ? ? System.out.println(obj2.passenger);
? ? }
}
則相應(yīng)的輸出為:
0
4
2016-05-17
你父類對象指向子類、肯定輸出 子類結(jié)果啦!看清楚噢?。?/p>
2016-05-16
使用父類類型的引用指向子類的對象;該引用只能調(diào)用父類中定義的方法和變量;如果子類中重寫了父類中的一個方法,那么在調(diào)用這個方法的時候,將會調(diào)用子類中的這個方法;(動態(tài)連接、動態(tài)調(diào)用)