P26重写与多态
一、P26内容总结
- 类的继承:横向扩展、纵向扩展(重写)、类成员的隐藏
- 多态
二、类的继承
- 类成员的横向扩展(成员数量)
//新建Car实例后不仅有Run方法,还有Speed属性
class Vehicle
{
public void Run()
{
Console.WriteLine("I'm running");
}
}
class Car:Vehicle
{
public int Speed { get; set; }
}
- 类成员的纵向扩展(行为改变,版本增高)
//实例:子类对父类成员的重写
class Vehicle
{
public virtual void Run()
{
Console.WriteLine("I'm running");
}
}
class Car:Vehicle
{
public override void Run()
{
Console.WriteLine("Car is running");
}
}
- 类成员的隐藏(不常用)
//实例:子类对父类成员的隐藏
class Vehicle
{
public void Run()
{
Console.WriteLine("I'm running");
}
}
class Car:Vehicle
{
//在Car类里有两个Run方法,一个是从父类继承下来的一个是自己的,默认把自己的Run方法给隐藏了
public void Run()
{
Console.WriteLine("Car is running");
}
}
- 重写与隐藏发生的条件:
1)函数成员;
2)可见(修饰符为public&protected);
3)签名(对于方法:方法名&参数列表)一致。
三、多态
- 概念:当我们用一个父类变量引用一个子类的实例时,并调用一个被重写成员时,总是能调到继承类上最新的版本;
- 基于重写机制(virtual override);
- 函数成员的具体行为由对象决定。