java的多态-简单理解

      关于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 Dancer implements People {

 

public void show() {

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

}

}

 

 

 

package three;

 

public class Singer implements People {

 

public void show() {

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

}

 

}

 

 

 

 

package three;

 

import java.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类工作,对其他任何圆形几何体,如圆环,也同样工作。









  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值