Is there any functional difference between c# sealed and Java's final keyword? [duplicate]

£可爱£侵袭症+ 提交于 2019-12-04 17:02:41

问题


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.


回答1:


Java's final keyword is the equivalent of C#'s sealed, readonly, and sealed 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 declared sealed (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 declared readonly, for the exact same effect, but local variables cannot. Note that Java has no equivalent of C#'s const keyword. (consts 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's final classes are exactly the same (AFAIK).




回答2:


Take a look into this answer: What is the equivalent of Java’s final in C#?



来源:https://stackoverflow.com/questions/2069010/is-there-any-functional-difference-between-c-sharp-sealed-and-javas-final-keywo

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!