c#sealed和Java的final关键字之间是否有任何function差异?
可能重复:
在C#中Java的最终结果是什么?
在Java中,final不仅适用于一个类。
所以,我想知道:两个关键字之间是否有任何function差异?
谢谢,对不起相对noob的问题。
快速的Google搜索无法满足我的需求。
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)。
看一下这个答案: 在C#中Java的最终结果是什么?