首页 > Python基础教程 >
-
C#教程之初识继承和多态
什么是继承
继承是使用已经存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能。
继承是面向对象编程中的一个非常重要的特性。在有继承关系的二个类中,子类不仅具有自己独立有的成员,还具有父类的成员
继承关系在类图中表示一个箭头,箭头指向的是父类
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()方法的重写
定义父类变量,用子类对象初始化父类变量
多态按字面的意思就是 多种形态,指同一个作用于不同的对象时,可以有不同的解释,产生不同的执行结果
可以用虚方法实现多态