当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

4.8继承

8/31/2020 9:56:04 PM 人评论

4.8继承

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第4章\继承.mp4

类的继承是指从已经定义的类中派生出一个新类。继承是面向对象最重要的特征。如果C#内的一个类直接继承了它基类的成员,这个类就被称为这个基类的子类或派生类。派生类能够从其基类继承所有的成员,包括变量、函数和属性。基类和子类通过继承这个纽带形成了一种层次结构,在应用中可以同时完成不同的功能。

通过类的继承,将会在项目中生成一个层次结构,所以在使用继承前,应该首先确定各类之间的层次关系。例如,有一个mm类表示俱乐部的基类,一个en类表示英国的俱乐部派生类,一个fr表示法国的俱乐部派生类。那么就可以根据它们间的对应关系画出层次结构图,如图4-6所示。

图4-6 继承关系层次结构图

在上述层次结构关系中,类en和fr都是类mm的子类。所以en和fr都继承了mm的成员,在声明基类时,应该定义其子类中共同拥有的数据成员。例如函数成员和数据成员等,看下面一段代码。

public class mm
{
private string aa;
protected string name;
public string dui;
{
get
 {
   return name;
}
set
 {
   name=value;
}
}
public mm()
 {
}
  public mm(string name)
   {
     this.name=name;
}
  public void Chuli()
   {
     Console.WriteLine("生成球队!!!!");
}
}

上述代码中,在基类mm内定义了aa、name和dui三个变量成员。

继承是在声明类时定义的,其语法格式如下。

修饰符 class 类名 : 基类
 {
  代码块
}

其中,子类和基类之间用冒号“:”隔开。

在C#中,继承规则如下。

(1)除object类外,每个类有且只有一个基类。如果在程序中没有显式制定类的基类,那么它的直接基类就是object。

(2)除构造函数和析构函数之外,所有的基类成员都能被其子类所继承。但是需要注意的是,子类虽然能够继承基类的成员,但是并不能保证这些成员在子类中可以使用,这取决于成员的可访问性。

  • 基类中public、internal、protected、internal protected成员被继承后,在子类中依旧是上述访问性成员,并且在子类中可用。
  • 基类中private成员被继承后,在子类中依旧是private成员,但是在子类中不可用。

(3)子类可以扩展它的直接基类,能够在继承基类的基础上添加新的成员,但是不能删除集成成员的定义。

(4)继承是可以传递的。例如,如果类C从类B派生,而类B从类A派生,那么C就会继承在B中声明的成员,也能继承在A中声明的成员。但是在各类中使用这些成员时,也需要遵循成员的可访问性。具体说明如下。

  • 在类A和B中的public、internal、protected、internal protected成员,在C中依旧是上述访问性成员,并且在C中可用。
  • 在A和B中的private成员被继承后,在C中依旧是private成员,但是在C中不可用。

(5)不能循环继承类。例如,下面的代码是错误的。

class a:b
{
}
class b:c
{
}
class c:a
{
}

上述代码中的类存在循环依赖关系,所以运行后将会出现编译错误。

(6)类的直接基类必须至少和类的本身具有相同的可访问性。

(7)在派生子类中可以声明与基类成员相同名称的成员,这样就将基类中的这些成员隐藏了。

(8)类可以声明虚方法、虚属性和虚索引器,而派生子类可以重写上述虚成员。

(9)C#子类只能继承一个直接基类,但是支持基于接口的多重继承。

上一篇:4.7灵活自由的集合

下一篇:4.9多态

相关教程

共有条评论 网友评论

验证码: 看不清楚?