在Java中,final不仅适用于一个类。
所以,我想知道:两个关键字之间是否有任何功能差异?
谢谢你,对于一个相对noob的问题感到抱歉。
快速的Google搜索无法满足我的需求。
答案 0 :(得分:24)
Java的final
关键字相当于C#的sealed
,readonly
和sealed
关键字。
这三个中的两个在Java和C#中有所不同:
在Java中,默认情况下方法是虚拟的,因此可以声明任何方法final
以防止它被覆盖。在C#中,默认情况下方法不是虚拟的,因此可以声明唯一被覆盖的方法sealed
(以防止它们被进一步覆盖)
在Java中,可以声明任何变量或字段final
以防止在初始化后更改它(对于字段,在构造函数外部)。在C#中,字段可以声明为readonly
,但效果完全相同,但局部变量不能。请注意,Java没有等效的C#const
关键字。 (C#中的const
在编译时进行评估,并且值是硬编码的而不是被引用的)
对于类,C#的sealed
类和Java的final
类完全相同(AFAIK)。
答案 1 :(得分:5)