考察知识点 :extends、static、final、方法隐藏
1.编程要求:
- 父类
Car:final常量MAX_SPEED、静态方法run()、普通方法; - 子类
ElectricCar继承Car:尝试重写父类静态方法(验证静态方法是隐藏,不是重写); - 子类无法重写父类
final方法; - 测试:分别用父类、子类对象调用静态方法,观察结果。
打印结果:
汽车在行驶
电动车在行驶
汽车最大速度:280.0
2.解题过程
package Date501;
class Car {
// 1. final 常量:最大速度
public static final int MAX_SPEED = 120;
// 静态方法
public static void run() {
System.out.println("父类汽车在公路上行驶");
}
// final 普通方法:禁止子类重写
public final void showInfo() {
System.out.println("汽车最高时速:" + MAX_SPEED);
}
}
class ElectricCar extends Car {
// 静态方法【方法隐藏】,不是方法重写
public static void run() {
System.out.println("子类电动车在省电行驶");
}
// 下面这行代码会报错:final 方法不能被重写
// @Override
// public void showInfo() {}
}
public class TestCar {
public static void main(String[] args) {
// 静态方法推荐用 类名.方法 调用
System.out.println("---父类调用静态方法---");
Car.run();
System.out.println("---子类调用静态方法---");
ElectricCar.run();
// 多态引用调用静态方法:编译看左边,运行也看左边
System.out.println("---多态引用调用静态方法---");
Car car = new ElectricCar();
car.run();
// 调用final方法
System.out.println("---调用final方法---");
car.showInfo();
}
}