多态及实现方式

1.   什么是多态

多态按字面意思就是“多种形态“。在面向对象语言中,接口的多种不同实现方式即为多态。用一句比较通俗的话说;同一操作作用于不同的对象,可以产生不同的效果。

多态在生活中就像是同一个词语,用在不同的语境中,可以表达不同的意思。

例子:比如有动物(Animal)之类(Class),而且由动物继承出类别(Chicken)和类别够(Dog),并对同一源自类别动物(父类别)之一消息有不同的响应,如类别动物有“()”的动作,而类别鸡会“啼叫()”,类别狗会“吠叫()”,则称之为多态。如图:

                                                                                            

2.  为什么需要多态

多态可以把不同的子类对象当作父类来看,可以屏蔽不同子类之间的差异,写出通用的代码,做出通用的编程,以适用需求的不断变化。

在提到多态时不得不提的是封装和继承,封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,他把实现的细节全部隐藏起来了,例如:在java中取实现一个类,这个类中提供了一些功能方法,你只需知道你需要传递什么参数,会达到什么效果,来使代码模块化。继承可以扩展已经存在的代码模块,而目的就是为了使代码重用。

多态除了代码的复用,还可以解耦,耦合度就是模块与模块之间,代码与代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的目的,模块与模块之间尽量使用模块接口访问,而不是随意引用其他模块的变量成员。

多态的优点:

1.应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承

2.派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用

3. 多态的实现方式

3.1  虚方法

关于虚方法需要注意的几点:
1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2.虚方法在父类中必须有实现,哪怕是空实现。
3.虚方法子类可以重写(override),也可以不重写

3.2   抽象类

关于抽象方法注意的几点:
1.需要用abstract关键字标记
2.抽象方法不能有任何方法实现。
3.抽象成员必须包含在抽象类中。
4.由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
5.抽象类不能实例化,
抽象类的作用:抽象类的作用就是为了让子类继承。
6.抽象类中可以包括抽象成员,可以包括有具体代码的成员。
7. 还有抽象方法不能用static修饰

3.3    接口

关于接口要注意以下几点:

1.接口中只能包含方法(属性、事件、索引器也都是方法)
2.接口中的成员都不能有任何实现。光说不做
3.接口不能被实例化。
4.接口中的成员不能有任何访问修饰符。(默认为public)
5.实现接口的子类必须将接口中的所有成员全都实现。
6.子类实现接口的方法时,不需要任何关键字,直接实现即可。
7.接口存在的意义就是为了多态。

 

   

 

posted @ 2020-03-12 11:35  jyqdaisy  阅读(267)  评论(0编辑  收藏  举报