C#中Java的最终结果相当于什么?

问题:

C#中Java的final是什么?

回答:

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

防止子类化(从定义的类继承):
 Java的

public final class MyFinalClass {...}

 C#

public sealed class MyFinalClass {...}

方法

防止覆盖virtual方法。
 Java的

public class MyClass
{
    public final void myFinalMethod() {...}
}

 C#

public class MyClass : MyBaseClass
{
    public sealed override void MyFinalMethod() {...}
}

正如Joachim Sauer指出的那样,这两种语言之间的显着区别在于Java默认情况下将所有非静态方法标记为virtual,而C#将它们标记为sealed。因此,如果要停止进一步覆盖基类中明确标记为virtual的方法,则只需在C#中使用sealed关键字。

变量

只允许一个变量分配一次:
 Java的

public final double pi = 3.14; // essentially a constant

 C#

public readonly double pi = 3.14; // essentially a constant

作为旁注,readonly关键字的效果与const关键字的效果不同,readonly表达式在runtime而不是compile-time进行评估,因此允许任意表达式。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is the equivalent of Java’s final in C#?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

94 − 85 =