多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
1.用抽象类实现多态
我们先定义一个水果Fruit抽象类,用abstract修饰,然后在抽象类中定义一个抽象方法Eat,然后再定义两个子类,Apple和Lemon类,它们都继承于Fruit类,然后在两个子类中重写Eat方法,注意要用override修饰
然后,我们在主程序中我们来实现多态
2.用虚方法virtual来实现多态
首先我们先定义一个Bird类,再定义一个虚方法Eat,注意需要用virtual关键字修饰,之后我们再定义两个子类,Swallow和Eagle类,它们都继承于Bird类,然后重写虚方法Eat,此时也需要用override关键字修饰Eat方法
然后我在主程序中实现多态,此时父类Bird可以实例化
3.用接口实现多态
首先我们定义一个接口,Book,用interface修饰,在接口中定义一个方法Read,注意此方法不能用任何访问修饰符修饰,并且在接口中也不具体实现方法,然后再定义两个Math和Physics类,他们继承接口Book,然后实现方法Read
之后我们在主程序中实现多态
至此,三种方法来实现多态都已经定义完成,我们一起来看程序的运行结果
以上就是我对c#中多态的一些浅薄的认识,如有错误的地方,欢迎批评指正!