我对类和方法之间“final”关键字的使用有很大的困惑。即为什么final方法只支持继承,而不支持final类?
final class A{
void print(){System.out.println("Hello, World!");}
}
class Final extends A{
public static void main(String[] args){
System.out.println("hello world");
}
}
ERROR:
不能继承 Final A
类最终扩展 A{
最终方法是..
class Bike{
final void run(){System.out.println("run");}
}
class Honda extends Bike{
public static void main(String[] args){
Honda h=new Honda();
h.run();
}
}
为什么final类不能被继承,而final方法却可以被继承?
为什么?因为final
意味着不同的事情对于类和方法。
为什么它意味着不同的事情?因为这就是 Java 语言设计者选择设计该语言的方式!
其具有三种不同的含义final
Java 中的关键字。
-
A final
班级不能延长。
-
A final
方法不能被重写。
-
A final
变量初始化后不能再赋值。
他们为什么决定使用final
在不同的上下文中意味着不同的事物?可能这样他们就不需要保留 2 或 3 个不同的关键字。 (事后看来,这可能不是最好的决定。然而,这是有争议的……在我看来,争论这是浪费时间。)
值得注意的是,其他关键字在Java中具有多种含义;例如。,static
and default
(在 Java 8 中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)