我正在測試協變返回類型並遇到此問題。擴展變量和協變返回類型
class Vehicle {
int i = 3;
}
class Car extends Vehicle{
int i = 5;
public Car returningCar(){
System.out.println("Returning Car");
return new Car();
}
public Vehicle returningCarInVehicle(){
System.out.println("Returning CarInVehicle");
return new Car();
}
}
public class ScjpTest{
public static void main(String[] args){
Car car = new Car();
Vehicle vehicleCar = car.returningCar();
Vehicle vehicleCar2 = car.returningCarInVehicle();
System.out.println("vehicleCar " + vehicleCar.i);
System.out.println("vehicleCar2 " + vehicleCar2.i);
}
}
輸出到上述被返回租車
Returning
CarInVehicle
vehicleCar 3
vehicleCar2 3
我不明白爲什麼輸出3.我期待的輸出爲5在這兩種情況,因爲在運行時,JVM使用的實際對象不是參考。
謝謝
它與協變返回類型有什麼關係? –
我只是發現了一些關於Java的東西。在其他編程語言中「int i = 5;」將被標記爲「重複」標識符。 – umlcat