一、继承的概念:
1.使用已存在的类的定义作为基类建立新类的技术,新类的定义可以增加新的数据和功能,也可以使用已存在的类的功能。
2.生活中继承的例子:父类:汽车(特征:行驶、刹车)
子类:卡车(独有特征:载重、拉货、卸货)
公共汽车(独有特征:载客、停靠站)
3.在有关系的两个类中,子类不仅具有自己独有的成员,还具有父类的成员。
子类 is a 父类
二、里氏替换原则:
定义:子类可以替换父类并且出现在父类能够出现的任何地方,且程序行为不会发生变化,但是反过来,父类对象是不能替换子类对象的。
三、is和as操作符:
is:用于检查对象和指定类型是否兼容。
if(empls[i] is SE)
{
……
}
as:用于两个对象之间的类型转换。
if(empls[i] is SE)
{
SE se=empls[i] as SE;
Console.Write(se.SayHi());
}
注:as关键字转换失败会返回Null,不会产生异常。
四、base关键字:
base:表示父类,可以用于访问父类的成员。
1. 使用base调用父类的属性:
public class SE:Engineer {
public string SayHi(){
String message;
Message=string.Format(“我是{0},今年{1}岁”,base.Name,base.Age);
Return message;
}
}
2. 使用base调用父类构造函数:
创建子类对象时会先调用父类的构造函数,然后才会调用子类本身的构造函数(默认调用父的无参构造函数)。
子类构造函数参数列表:base(参数列表)就可以指定调用父类的构造函数。
例:
Public SE(string id,string name,int age):base(name,age) { this.ID=id; }
注意: 1.使用base实际是对方法的调用,所以不需要再定义数据类型,因为name,age是作为实参传入的。
2.参数的变量名必须与父类中的参数名一致,顺序也要一致。
五、继承的价值:
1. 符合面向对象编程的思考分向。
2. 实现了代码的重用。
3. 使得程序结构清晰。