一尘不染

在C#中Java的最终版本相当于什么?

c#

finalC#中的Java等效于什么?


阅读 248

收藏
2020-05-19

共1个答案

一尘不染

final关键字在Java中的几个用途。它取决于C#中的sealedreadonly关键字,具体取决于使用它的上下文。

班级

为了防止子类化(从已定义的类继承):

爪哇

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表达在评价 运行时 ,而不是 编译时 ,因此允许任意表达式。

2020-05-19