C# Seal 和 Java 的 Final 关键字在功能上有什么区别吗?
可能的重复:
C# 中 Java 的final 相当于什么?
在 Java 中,final 不仅仅适用于类。
所以,我想知道:这两个关键字之间有什么功能区别吗?
谢谢你,很抱歉问了一个相对菜鸟的问题。
快速的谷歌搜索并不能满足我的需求。
Possible Duplicate:
What is the equivalent of Java’s final in C#?
In Java final applies to more than just a class.
So, I wonder: is there any functional difference between the two keywords?
Thank you, and sorry for a relatively noob question.
A quick Google search did not satisfy my needs.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Java 的
final
关键字相当于 C# 的sealed
、readonly
和sealed
关键字。这三个方法中的两个在 Java 和 C# 中有些不同:
在 Java 中,方法默认是虚拟的,因此任何方法都可以声明为
final
以防止其被重写。在 C# 中,方法默认不是虚拟的,因此唯一被重写的方法可以声明为sealed
(以防止它们被进一步重写)在 Java 中,任何变量或字段都可以声明为
final< /code> 以防止它在初始化后被更改(并且,对于字段,在构造函数之外)。在 C# 中,可以将字段声明为只读,以获得完全相同的效果,但局部变量则不能。请注意,Java 没有与 C# 的
const
关键字等效的关键字。 (C# 中的 const 在编译时求值,值是硬编码的而不是被引用)对于类,C# 的 sealed 类和 Java 的final 类完全相同(AFAIK)。
Java's
final
keyword is the equivalent of C#'ssealed
,readonly
, andsealed
keywords.Two of those three are somewhat different in Java and C#:
In Java, methods are virtual by default, so any method can be declared
final
to prevent it from being overriden. In C#, methods are not virtual by default, so the only overridden methods can be declaredsealed
(To prevent them from being further overridden)In Java, any variable or field can be declared
final
to prevent it from being changed after initialization (And, for fields, outside the constructor). In C#, fields can be declaredreadonly
, for the exact same effect, but local variables cannot. Note that Java has no equivalent of C#'sconst
keyword. (const
s in C# are evaluated at compile-time, and the values are hard-coded instead of being referenced)For classes, C#'s
sealed
classes and Java'sfinal
classes are exactly the same (AFAIK).看看这个答案:什么是相当于C#中Java的final?
Take a look into this answer: What is the equivalent of Java’s final in C#?