Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止类';a';被另一个类继承?_C#_Java_Vb.net_Programming Languages - Fatal编程技术网

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
      ——而不是其他具有不可继承性的副作用的构造。私有构造函数阻止的不仅仅是继承!是的,正如我提到的,这是防止继承的最干净的方法