Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中继承final方法有什么用?如果我们不能推翻它_Java_Oop_Keyword_Final - Fatal编程技术网

在java中继承final方法有什么用?如果我们不能推翻它

在java中继承final方法有什么用?如果我们不能推翻它,java,oop,keyword,final,Java,Oop,Keyword,Final,我在学习java基础知识时遇到了这个final关键字。读到最后一个方法可以被继承。但我们不能推翻这种方法。那么继承任何最终方法有什么用呢?为什么要这样做? 方法的继承使该方法可用于调用子类。调用方法显然很有用 当对子类调用方法名时,Java运行时首先查看该子类是否有这样的方法。如果找到,则执行该方法的实现。如果找不到,Java运行时将查找此类方法的超类。如果找到,则执行该方法的实现。如果没有找到,Java运行时将查找超类的超类,依此类推 覆盖 重写意味着您不想调用超类中的方法,相反,子类提供了在

我在学习java基础知识时遇到了这个final关键字。读到最后一个方法可以被继承。但我们不能推翻这种方法。那么继承任何最终方法有什么用呢?为什么要这样做?

方法的继承使该方法可用于调用子类。调用方法显然很有用

当对子类调用方法名时,Java运行时首先查看该子类是否有这样的方法。如果找到,则执行该方法的实现。如果找不到,Java运行时将查找此类方法的超类。如果找到,则执行该方法的实现。如果没有找到,Java运行时将查找超类的超类,依此类推

覆盖 重写意味着您不想调用超类中的方法,相反,子类提供了在调用该方法名称时要使用的替代(或附加)行为。在某些类别中,允许替代/附加行为可能有风险

事实上,一般的观点似乎正在朝着所有方法都应该是最终方法的方向发展,直到类作者确定了一种情况,在这种情况下,允许特定的重写是必要的或有用的,足以证明潜在的风险。(类似的智慧似乎也在增长,即类最初应该设计为不可变的,直到确定了对可变性的特定需求。)

密封类 密封类/接口的未来特性为这个问题提供了另一个解释。密封类只允许通过编译时已知的子类的显式列表进行继承

在密封类中,方法只能通过其已知子类进行继承(非
final
)。编译器和Java运行时环境根据允许的子类列表消除了其他类稍后添加意外行为的风险


您可以尝试将密封类作为一个整体。该功能将于2021-2009年推出。

您不能覆盖它,但仍然可以使用父类的实现。Java的对象类定义了最终的方法。无法覆盖它,但如果我们不能继承它,它将毫无用处。