微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是 C# 中 Java 的 final 等价物?

如何解决什么是 C# 中 Java 的 final 等价物?

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

课程

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

public final class MyFinalClass {...}

public sealed class MyFinalClass {...}

方法

防止覆盖virtual方法

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

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

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

附带说明一下,关键字的效果readonly关键字的效果不同,const因为readonly表达式是在 运行 时而不是在 编译时计算的 ,因此允许任意表达式。

解决方法

finalC#中Java的等价物是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。