C# 如何防止类';a';被另一个类继承?
我有一个名为C# 如何防止类';a';被另一个类继承?,c#,java,vb.net,programming-languages,C#,Java,Vb.net,Programming Languages,我有一个名为fdetails的类,我不想从这个类继承任何其他类 我可以将其设置为不被其他类继承吗。我想用以下3种语言完成这项工作: 爪哇 VB.NET3.5 C#3.5 在JAVA中-使用最后一个关键字: public final class FDetails public final class fdetails{ } 在C#-密封关键字中: sealed class FDetails public sealed class fdetails{ } 在C#中,您使用sealed关
fdetails
的类,我不想从这个类继承任何其他类
我可以将其设置为不被其他类继承吗。我想用以下3种语言完成这项工作:
- 爪哇
- VB.NET3.5
- C#3.5
- 在JAVA中-使用最后一个关键字:
public final class FDetails
public final class fdetails{
}
在C#-密封关键字中:
sealed class FDetails
public sealed class fdetails{
}
在C#中,您使用sealed
关键字来防止类被继承
在VB.NET中使用notheritable
关键字
在Java中使用关键字
final
在Java中使用final关键字:
public final class FDetails
java: final
vb: NotInheritable (NonOverrideable for properties)
c#: sealed
public final class fdetails{
}
在C#中,使用sealed关键字:
sealed class FDetails
public sealed class fdetails{
}
在VB.net中,使用NotInheritable关键字:
public notinheritable class fdetails
end class
为了防止C#中的类被继承,使用了sealed关键字。因此,密封类不能用作任何其他类的基类。很明显,密封类不能是抽象类。下面的代码
//C# Example
sealed class ClassA
{
public int x;
public int y;
}
没有类可以从上面定义的ClassA继承。可以创建ClassA的实例并访问其成员,但下面的代码是不可能的
class DerivedClass : ClassA { } // Error
在Jave和VB.net中相同:
java: final
vb: NotInheritable (NonOverrideable for properties)
或者,我们可以使用私有构造函数创建基类以避免继承(在C#中,您会遇到这样的错误:该类由于其保护级别而不可访问(如果您引用基类)对于C#,它是“密封”关键字
对于Java,它是“final”关键字。
static
对于所需的功能不是必需的。c#:您也可以创建私有构造函数来限制继承。通过使用final
,您仍然可以继承它:“内部类”当然可以,但如果所述的问题是该类不可继承(即不可扩展),然后使用明确用于此目的的语言机制——在Java中,即final
——而不是其他具有不可继承性的副作用的构造。私有构造函数阻止的不仅仅是继承!是的,正如我提到的,这是防止继承的最干净的方法