下面代码中 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();
}
是super的作用,java中this指当前对象,super是调用父对象,当子类覆盖父类的方法时,使用super可以掉用父类方法。