【C#语言入门】20. 重写,多态
一、重写
- 类成员的“纵向扩展”(行为改变,版本增高)
- 重写发生条件:函数成员,可见,签名一致
二、多态(polymorphism)
- 基于重写机制(virtual——》override)
- 函数成员的具体行为(版本)由对象决定
class Program
{
static void Main(string[] args)
{
var car = new Car();
car.Run();
var v1 = new Vehicle();
v1.Run();
Car c = new RaseCar();
c.Run();
Vehicle vc = new Vehicle();
vc.Run();
Console.WriteLine(vc.Speed);
Vehicle vc1 = new Car();
vc1.Run();
Console.WriteLine(vc1.Speed);
}
}
class Vehicle
{
private int _speed;
public virtual int Speed
{
get { return _speed; }
set { _speed = value;}
}
public virtual void Run()
{
Console.WriteLine("I am running.");
}
}
class Car : Vehicle
{
private int _rpm;
public override int Speed
{
get { return _rpm / 100; }
set { _rpm = value * 100; }
}
public override void Run()
{
Console.WriteLine("Car is running.");
_rpm = 5000;
}
}
class RaseCar : Car
{
public override void Run()
{
Console.WriteLine("Rase car is running.");
}
}