小编典典

C#密封vs Java Final

java

有人能告诉我以下使用方法sealed不能编译的原因吗?然而,如果我更换sealedfinal和编译如Java,它的工作原理。

private sealed int compInt = 100;
public bool check(int someInt)
{
    if (someInt > compInt)
    {
        return true;
    }
    return false;
}

阅读 212

收藏
2020-11-13

共1个答案

小编典典

这是因为final在Java中,具体取决于您使用它,而意味着很多不同的东西sealed在C#应用 类和继承的虚拟成员(方法,属性,事件)。

在Java final中可以应用于:

  • classes ,这意味着该类不能被继承。这相当于C#的sealed
  • methods ,这意味着该方法不能在派生类中重写。这是C#中的默认设置,除非您将方法声明为,virtual并且在派生类中将其声明为,可以防止sealed再次使用其他派生类。这就是为什么您看到sealedC#中的final成员比Java中的成员少得多的原因。
  • 字段变量 ,这意味着它们只能初始化一次。对于字段,C#中的等效项是readonly
2020-11-13