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