C#类的继承机制

来源:互联网 发布:编程用什么笔记本好 编辑:程序博客网 时间:2024/04/29 09:08

       在C#这门面向对象的语言中提供了两个重要的特性继承性inheritance 和多态polymorphism.  

       继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次.     

      C#中,派生类只能从一个类中继承。这是因为,在C++中,人们在大多数情况下不需要一个从多个类中派生的类。从多个基类中派生一个类这往往会带来许多问题,从而抵消了这种灵活性带来的优势。

      C#中,派生类从它的直接基类中继承成员:方法、域、属性、事件、索引指示器。除了构造函数和析构函数,派生类隐式地继承了直接基类的所有成员。

      C#中的继承符合下列规则:

  1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object 类作为所有类的基类。

  2、派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。

  3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。

  4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。

  5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。

  6、派生类只能从一个类中继承,可以通过接吕实现多重继承。

       下面的代码是一个子类继承父类的例子:

     using System ;
     public class ParentClass
      {
           public ParentClass( )
              {

                Console.WriteLine("父类构造函数。");

              }
          public void print( )
             {

                 Console.WriteLine("I'm a Parent Class。") ;

             }
     }
    public class ChildClass : ParentClass
     {
           public ChildClass( )
             {

                Console.WriteLine("子类构造函数。") ;

              }
          public static void Main( )

             {
                ChildClass child = new ChildClass( ) ;
                child.print( ) ;
              }
    }