首页 > 开发 > 综合 > 正文

深入剖析C#继承机制2

2024-07-21 02:18:14
字体:
来源:转载
供稿:网友

二、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( ) ;
}
}

  程序运行输出:

  父类构造函数。子类构造函数。i'm a parent class。

  上面的一个类名为parentclass, main函数中用到的类名为childclass。要做的是创建一个使用父类parentclass现有代码的子类childclass。

  1.首先必须说明parentclass是childclass的基类。

  这是通过在childclass类中作出如下说明来完成的:"public class childclass : parentclass"。在派生类标识符后面,用分号":" 来表明后面的标识符是基类。c#仅支持单一继承。因此,你只能指定一个基类。

  2.childclass的功能几乎等同于parentclass。

  因此,也可以说childclass "就是" parentclass。在childclass 的main( )方法中,调用print( ) 方法的结果,就验证这一点。该子类并没有自己的print( )方法,它使用了parentclass中的 print( )方法。在输出结果中的第三行可以得到验证。

  3.基类在派生类初始化之前自动进行初始化。parentclass 类的构造函数在childclass的构造函数之前执行。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表