//多态概念:在继承关系前提下,实例化出的不同对象,,这些对象调用相同的方法,但表现出不同的行为,就叫做多态。
using System;
using System.Collections.Generic;
using System.Text;
namespace 多态
{
class TrafficTool
{
public virtual void Run()
{
Console.WriteLine("启动");
}
public virtual void Stop()
{
Console.WriteLine("停止");
}
public void Break()
{
Console.WriteLine("抛锚");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace 多态
{
class Car:TrafficTool
{
public override void Run()
{
base.Run();
Console.WriteLine("汽车启动");
}
public override void Stop()
{
base.Stop();
Console.WriteLine("汽车停下");
}
public void Break()
{
Console.WriteLine("刹车");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace 多态
{
class AipPlan:TrafficTool
{
public override void Run()
{
base.Run();
Console.WriteLine("飞机启动");
}
public override void Stop()
{
base.Stop();
Console.WriteLine("飞机停下");
}
}
}
//程序实现
using System;
namespace 多态
{
class Program
{
static void Main(string[] args)
{
/*Car s = new Car();
AipPlan a = new AipPlan();
Driver d1 = new Driver();
d1.Drive(s);
d1.Drive(a);*/
TrafficTool t3 = new Car();
TrafficTool t4 = new AipPlan();
//基于“虚方法”的多态
t3.Run();//启动汽车启动
t4.Run();//启动飞机启动
//里式转换
TrafficTool t1 = new TrafficTool();
TrafficTool t2 = new Car();//父类引用指向子类对象,
t1.Break();//父类方法
t2.Break();//父类方法
//父类需要调用子类方法时,将父类转为子类(
//父类引用指向子类对象时才能够转换)
//ar c1 = (Car )t2;//强转
bool r = t2 is Car;//可以转换返回真/不能转返回假
Car c1 = t2 as Car;//可以转返回子类对象/不能转返回Null
t1.Break();//父类方法
c1.Break();//子类方法
}
}
}