初识继承和多态

一个人想着一个人 提交于 2020-02-14 04:23:42

什么是继承

继承是使用已经存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能。

继承是面向对象编程中的一个非常重要的特性。在有继承关系的二个类中,子类不仅具有自己独立有的成员,还具有父类的成员

继承关系在类图中表示一个箭头,箭头指向的是父类

base关键字和protected修饰符

都知道this表示当前实例,通过他可以访问类本身的成员,C#中还有一个关键字base,他表示父类,可以用于访问父类的成员。

在子类中可以用base调用父类的属性。实际上,还可以用base关键字调用父类的方法及父类的构造函数

父类中的成员如果用private修饰,他将作为私有成员,其他任何类都无法访问。如果设置为public成员,任何类都可以访问该成员。

在C#中提供了另一种访问修饰符protected,被这个访问修饰符修饰的成员允许被其子类访问,而不允许其他非子类访问

public ,private ,protected的区别

 修饰符                  类内部                          子类                     其他类

public                   可以                             可以                     可以

protected              可以                             可以                     不可以

public                   可以                             不可以                   不可以

可以看出,三种访问修饰符对类成员的访问限制强度:private>protected>public

子类构造函数

隐式调用父类构造函数

is a 的应用

继承的价值

体会一下继承的特点

继承模拟了现实世界的关系,oop中强调一切皆对象,这符合我们面向对象编程的思考方向

继承实现了代码的重用,合理的使用继承,会使代码更加简洁

继承使程序结构清晰,子类和父类的层次结构清晰,最终的目的是使子类只关注子类的相关行为和状态,无须关注父类的行为与状态

解决继承带来的问题

public virtual string SayHi(){
   //方法体
}

像这种使用virtual 关键字修饰的方法,称为虚方法。虚方法有方法体

语法

访问修饰符  virtual  返回类   方法名(){
  //方法体

}

 

public  override string SayHi(){
  //方法体
}

像这种通过override关键字来修饰的方法,称为方法的重写。虚方法可以被重写

语法

访问修饰符  override

  返回类   方法名(){
  //方法体
}

什么是多态

实现多态

实现方法的重写

父类中定义SayHi()方法,用virtual关键字定义为虚方法

在子类中定义子类自己的SayHi(),用override关键字修饰,就实现了对父类SayHi()方法的重写

定义父类变量,用子类对象初始化父类变量

多态按字面的意思就是 多种形态,指同一个作用于不同的对象时,可以有不同的解释,产生不同的执行结果

可以用虚方法实现多态

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!