java的多态-简单理解

来源:互联网 发布:淘宝上的大拿韩代 编辑:程序博客网 时间:2024/06/05 17:58

      关于Java的多态我感觉我不是老师只是个lazy的学生,也讲不清楚,我也不用那些高大上的术语了,以下例子是我打过的程序,粘贴过来说一下我的理解

    假如学校开一个晚会,给每个表演者发门卡,进出会场刷卡时会显示他的身份

    在此为了简化我们只区分dancer和singer

   按照常规我们先分别写出这两个类 

   Dancer.java

   

packagefour;

 

public class Dancer {

public void show2(){

    System.out.println("we are dancers");

}

}


  Singer.java 

 

packagefour;

 

public class Singer {

      public  void show1(){

      System.out.println("we aresingers");

      };

}



再写一个测试类


 

packagefour;

 

public class TestMain {

 

public static void main(String[]args) {

Singer p1=newSinger();

Dancer p2=newDancer();

p1.show1();

p2.show2();

}

 

}


测试的结果为

 

虽然这样可以辨别singer和dancer的身份,但是我们注意到Singer和Dancer类中分别有不一样的show方法,假设有100种不一样的身份也就是要写到show100,显然这样方法太多,会显得麻烦 ,这时候多态就有用了,只需要一个show方法即可。


 下面是应用多态改的程序

package three;

 

public interface People {

     void show();

}

 

 

 

 

 

package three;

 

public class Dancerimplements People {

 

public void show() {

System.out.println("we are  dancers");

}

}

 

 

 

package three;

 

public class Singerimplements People {

 

public void show() {

System.out.println("we are singers");

}

 

}

 

 

 

 

package three;

 

importjava.util.WeakHashMap;

 

public class TestMain {

 

public static void main(String[]args) {

 People p1=new Dancer();

 People p2=new Singer();

  p1.show();

  p2.show();

}

 

 

}

我们可以看到singer和dancer辨别身份时用的是相同的show方法,这个时候show方法会根据对象类的不同而提示不一样的内容,非常方便,简化的程序

           符合多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。

         当然从这个例子我们也可以发现多态的三个特征,要有继承,要有重写,要有父类应用指向子类对象


      1 Dancer类和Singer类都是People累的继承

      2对show方法都进行了重写

      3 People  p1=new Dancer();

         People p2=new Singer();

    注意不是Dancer  p1=new Dancer();

    都有父类应用指向子类对象


   总结一下多态的好处

         1.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

        2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。

        3.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

       4.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。









  

 

原创粉丝点击