Csharp多态的实现(抽象类)
1.什么是抽象类
抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写
抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的)
非抽象类中只能存放非抽象的方法(这个可以在下面的代码中可以看出类)
如果子类也是抽象类,那么父类中所有的抽象方法,属性不必全部实现; 如果子类不是抽象类,那么父类中所有的抽象方法,属性必须全部实现(如果不实现会报错,这个也可以观察出来)
2.下面来看一下代码的实现,来点干的
//先定义一个Car父类 abstract class Car { private string _name;//用private修饰的,只能在父类中使用 public string name//可以再子类中继承使用 { get { return _name; } set { _name = value; } } public abstract void say();//抽象方法,必须在子类中重写 public void start()//可以再子类中继承使用 { Console.WriteLine("我是一辆车,我现在启动了"); } } //定义一个Benz类,继承Car class Benz:Car { public override void say()//在子类中重写 { Console.WriteLine("我是大奔,我叫{0}",name); } } //定义一个BMW类,继承Car class BMW:Car { public override void say()//在子类中重写 { Console.WriteLine("我是宝马,我叫{0}",name); } }
3.如果使用多态
定义一个父类的变量 Car b = new Benz();
b = new BMW();
先装的是奔驰类,后来装的是宝马类,装那个类,表现出那个类的特征,这就是多态
3.1 一个父类可以装不同的子类,从而实现不同的形态
3.2 当一个父类被多个类继承的时候,子类中的方法很多,而父类中的方法无法确定的时候,在父类定义个抽象方法,然后在子类中实现就可以了,在使用多态的时候,也可以直接使用