gpt4 book ai didi

java - 重写运行方法

转载 作者:行者123 更新时间:2023-12-01 13:46:24 25 4
gpt4 key购买 nike

class Car extends Vehicle { 
public static void main(String [] args) {
new Car().run();
}
private final void run() {
System.out.println("Car");
}
}

class Vehicle {
private final void run() {
System.out.println("Vehicle");
}
}

这是“J2SE 5 平台 SCJP 考试”中的练习题它显然返回了 Car。

但是 Car 扩展了 Vehicle 并重写了 run()。但参加 super 类是最终决定。我不认为你可以覆盖 final方法?

最佳答案

secret 就在 private 修饰符中。 JLS 8.4.3.3. final Methods

A private method and all methods declared immediately within a final class (§8.1.1.2) behave as if they are final, since it is impossible to override them.

私有(private)方法在其自身之外的任何地方都是不可见的,因此不能被覆盖。

他们只是碰巧有相同的名字,但除此之外没有任何共同之处。

如果您扩展源代码中不知道的类,这种行为也很有意义。您需要知道所有看不到的私有(private)方法签名,这样您就不会意外地覆盖和破坏它们。

关于java - 重写运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20341714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com