我在类和方法之间使用“ 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");
}
}
错误:
不能从Final A类继承Final扩展A {FINAL METHOD IS..。
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
意味着不同的东西。
为什么这意味着不同的事情?因为那是Java语言设计人员选择设计语言的方式!
final
Java中的关键字具有三种不同的含义。
一个final
类不能扩展。
甲final
方法不能被重写。
一个final
变量不能分配给它已被初始化后。
他们为什么决定final
在不同的上下文中使用不同的含义?可能是因为它们不需要保留2或3个不同的关键字。(事后看来,这可能不是最好的决定。但是,这值得商and……而辩论可能是浪费时间。)
值得注意的是,其他关键字在Java中具有多种含义。例如static
和default
(在Java 8中)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句