12

可能重复:
C# 中 Java 的 final 等价物是什么?

在 Java 中,final 不仅仅适用于一个类。

所以,我想知道:这两个关键字之间有什么功能上的区别吗?

谢谢,对于一个相对菜鸟的问题感到抱歉。

快速的谷歌搜索并不能满足我的需求。

4

2 回答 2

23

Java 的final关键字等同于 C# 的sealedreadonlysealed关键字。

这三个中的两个在 Java 和 C# 中有些不同:

在 Java 中,默认情况下方法是虚拟的,因此可以声明任何方法final以防止其被覆盖。在 C# 中,方法默认不是虚拟的,因此可以声明唯一被覆盖的方法sealed (以防止它们被进一步覆盖)

在 Java 中,可以声明任何变量或字段final以防止其在初始化后被更改(并且,对于字段,在构造函数之外)。在 C# 中,可以声明字段readonly,达到完全相同的效果,但不能声明局部变量。请注意,Java 没有 C#const关键字的等价物。(constC# 中的 s 在编译时进行评估,并且这些值是硬编码的,而不是被引用)

对于类,C# 的sealed类和 Java 的final类完全相同(AFAIK)。

于 2010-01-15T02:20:55.110 回答
5

看看这个答案:Java 在 C# 中的 final 等价物是什么?

于 2010-01-15T02:17:45.627 回答