如何解决什么是 C# 中 Java 的 final 等价物?
该final
关键字在 Java 中有多种用法。它对应于
C# 中的sealed
和readonly
关键字,具体取决于使用它的上下文。
课程
为了防止子类化(从定义的类继承):
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
表达式是在 运行 时而不是在 编译时计算的 ,因此允许任意表达式。
解决方法
final
C#中Java的等价物是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。