C#面向对象15 多态

多态

概念:让一个对象能够表现出多种的状态(类型)

实现多态的3种手段:1.虚方法 2.抽象类 3.接口

1.虚方法

步骤:1.将父类的方法标记为虚方法,使用关键字 virtual,这个函数可以被子类重新写一遍

         2.override 子类重新的方法标记关键字

2.抽象类

当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法

abstract 关键字 

抽象方法是没有方法体的!

子类用override重写方法

抽象类是不允许创建对象的

抽象类特点:
* 1.抽象成员必须标记为abstract,并且不能有任何实现.
* 2.抽象成员必须在抽象类中.
* 3.抽象类不能被实例化.
* 4.子类继承抽象类后,必须把父类中的所有抽象成员都重写.(除非子类也是一个抽象类,则可以不重写)
* 5.抽象成员的访问修饰符不能是private
* 6.在抽象类中可以包含实例成员.并且抽象类的实例成员可以不被子类实现
* 7.抽象类是有构造函数的,虽然不能被实例化
* 8.如果父类的抽象方法中有参数,那么,继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数.
* 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须要传入返回值.

******虚方法和抽象类的区别

*如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态.
*如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定为为抽象类.

原文地址:https://www.cnblogs.com/youguess/p/8491083.html