C#密封和Java决赛(C# sealed vs Java final)

2019-06-23 16:00发布

会有人请告诉我,作为以下使用的原因, sealed不编译? 然而,如果我顶替sealedfinal并编译它如Java,它的工作原理。

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

Answer 1:

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

在Java中final可以适用于:

  • ,这意味着类不能被继承。 这是C#的等效sealed
  • 方法 ,这意味着,该方法不能在派生类重写。 这是在C#的默认值,除非声明一个方法作为virtual并且在此可以防止进一步的派生类与派生类sealed试。
  • 字段变量 ,这意味着它们只能被初始化一次。 对于场在C#中相当于是readonly


Answer 2:

SealedC#只能应用于引用类型 ,并且对继承树的影响。

在实践中标记为类型sealed存在保证是在继承树的最后一个“叶”,或简称,你不能从申报象类型派生sealed

public sealed class Child : Base 
{
}

public class AnotherAgain : Child //THIS IS NOT ALLOWED
{
}

它不能应用于成员。



Answer 3:

而乔伊的是一点点狄格兰不正确的答案是没有错的。
首先,你可以看看这个页面: 什么是Java的决赛在C#中的相同呢? 。
sealed关键字可以应用于classinstance methodproperty ,但不是变量,或接口的方法。 带类的sealed不能被继承。 当sealed穿上方法,它必须是由override在公司。 每一个structsealed ,所以struct不能被继承。 选中此图片:



文章来源: C# sealed vs Java final
标签: c# java sealed