首页 > 代码库 > C# 面向对象之多态

C# 面向对象之多态

由于子类继承类父类,那么子类就拥有相同的行为,但子类的行为有时需要相互区别

子类就需要覆写父类的方法来实现子类特有的行为,这样的技术在c#中就叫做多态。

多态就是相同类型的对象调用相同的方法却表现出不同的现象

 

使用virtual和override关键字实现重写方法

只有基类成员声明为virtual和abstract时才能被派生类重写

而如果子类想改变虚方法的实现行为,则必须使用override关键字

技术分享

技术分享

技术分享

技术分享

技术分享

最后执行结果为:

技术分享

 但是这样的代码存在一个问题

就是

Animal animal=new Animal ();

 这个样的话毫无意义,因为这里的基类是为子类提供公共成员

那么我们可以将基类创建为抽象类利用abstract关键字就可以防止这种情况发生。

阻止派生类重写虚成员


利用sealed关键字来实现

技术分享

如果在有个类来继承Horse并试图重写Voice方法就会收到错误信息

技术分享

使用新成员隐藏基类成员

利用new关键字来实现

技术分享

技术分享

技术分享

技术分享

 

C# 面向对象之多态