sra*_*i.s 5 java inheritance final class
在类和方法之间使用"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");
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
不能从最后的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();
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 17
为什么最终类不能被继承但是最终方法可以继承?
为什么?因为类和方法final
意味着不同的东西.
为什么它意味着不同的东西?因为这就是Java语言设计者选择设计语言的方式!
final
Java中的关键字有三种不同的含义.
一个final
类不能扩展.
甲final
方法不能被重写.
一个final
变量不能分配给它已被初始化后.
他们为什么决定final
在不同的环境中使用不同的东西?可能是因为他们不需要保留2或3个不同的关键字.(事后看来,这可能不是最好的决定.但这是有争议的......辩论它可能是浪费时间.)
值得注意的是,其他关键字在Java中具有多重含义; 例如static
和default
(在Java 8中).