该
final关键字在Java中的几个用途。它取决于C#中的
sealed和
readonly关键字,具体取决于使用它的上下文。
班级
为了防止子类化(从已定义的类继承):
爪哇
public final class MyFinalClass {...}C#
public sealed class MyFinalClass {...}方法
防止重写
virtual方法。
爪哇
public class MyClass{ public final void myFinalMethod() {...}}C#
public class MyClass : MybaseClass{ public sealed override void MyFinalMethod() {...}}正如Joachim
Sauer所指出的,这两种语言之间的显着区别是Java默认将所有非静态方法都标记为
virtual,而C#将它们标记为
sealed。因此,仅
sealed当您要停止进一步重写已
virtual在基类中显式标记的方法时,才需要在C#中使用关键字。
变数
仅允许一次分配变量:
爪哇
public final double pi = 3.14; // essentially a constant
C#
public readonly double pi = 3.14; // essentially a constant
作为边注,所述的效果
readonly关键词不同于所述的
const,所述关键字
readonly表达在评价 运行时 ,而不是 编译时 ,因此允许任意表达式。



