下面代碼中 1:Auto auto = new Car()為什麼這麼寫 ;
2:auto.fun(); 輸出的值為什麼是a poor engine
父類的engine方法不是已經被子類重寫了嗎?是super的作用?
public class Auto {
public void engine() {
System.out.println("a poor engine");
}
public void fun() {
System.out.println("Driving fun");
}
}
public class Car extends Auto {
public String name = "a nice car";
public void engine() {
System.out.println("a nice engine");
}
public void fun() {
super.engine();
}
public static void main(String[] args) {
Auto auto = new Car();
auto.fun();
auto.engine();
}
}
1、Auto auto = new Car(); 你也可以Car auto = new Car(), car是子類,類型用父類也沒什麼問題。
2、子類中多加一句print就知道會先調用子類的,因為子類用用super指明了調用父類的engine,所以會調用父類的engine,打印出a poor engine
public void fun() {
System.out.println("fun");
super.engine();
}