All About JAVA 继承、多态、抽象类、接口、面向接口编程

来源:互联网 发布:表格里数据自动更新 编辑:程序博客网 时间:2024/06/14 09:28

继承实现了代码的复用,抽象类兼顾了代码复用与实现多态的目的,接口是一个100%的抽象类,它的存在则纯粹是为了多态。

 

        多态,示例代码如下:

          

以上是3个类, Dog 和 Cat 继承自 Animal,下边写一个针对这三个类的测试类。

 

           

运行后输出为:

wang! wang!

miao! miao!

 

从上边测试类中可以看出,即使再增加一些其他继承自 Animal 的类比如 Duck 等,runAnimalMakeNoise方法依然有效。多态对于接口而言,如果定义个一个接口类型的引用变量,这个引用变量可以被赋予任意一个实现了此接口的对象,而不用管此对象自身实际继承自哪里。

 

面向接口编程:这里的接口不单单指的是JAVA的那个关键字interface,面向接口编程应该理解为面向超类编程,面向接口编程的思想正是利用了多态的特性,可以让写出的程序具有很强的扩展性与可维护性。 面向接口编程一般指在类的实例变量,类方法的参数,类方法的返回值类型等地方应用多态进行编程。 用设计模式中的策略模式举例(参考自《head first design pattern》):

 

         一个没有应用策略模式的代码片段:

          

         应用策略模式以后上边的代码变为如下形式。

           

          Duck类的子类:

            

          测试类:

          

         运行后输出:

         我飞得慢
         我飞得快

 

         策略模式定义了一组针对相同行为的不同算法,分别封装起来,这样可以让算法的变化独立于使用算法的类。多态用处soso。。

原创粉丝点击