举例理解java的多态,通俗,易懂

多态分为编译多态和运行多态,编译多态就是重载就不说了,说一下运行多态把!

假设有一个类 叫 鸟类,它拥有属性翅膀,拥有方法鸣叫,如下

public class Bird{
   private Wing wing;
   public void moo(){
          System.out.println("鸟叫声");
   }
}

鸟类封装了 翅膀类和moo方法;另外有两个类都继承鸟类并重写了moo方法,分别是鹦鹉和麻雀如下:
鹦鹉类:

public class Parrot extends Bird{
   public void moo(){
         System.out.println("鹦鹉的叫声");
   }
}

麻雀类:

public class Sparrow extends Bird{
   public void moo(){
         System.out.println("麻雀的叫声");
   }
}

方法重写应该懂吧,不懂自己找书看吧;然后你有个妻子她想听鸟叫,就有个妻子类

public class Wife{
     public void listen(Bird bird){
        bird.moo(); 
   }

/*这时多态就很好的体现了,你妻子想听鸟叫,无论什么鸟都可以给她,但是你想让她和鹦鹉
*说话,你就买了一只鹦鹉传给listen方法,结果你妻子听到了鹦鹉的叫声,程序输出:鹦
*鹉的叫声
*/

  public static void main(String[] args) {
       new Wife().listen(new Parrot());	
  }
}

多态实现了动态绑定,让程序有了很好的扩展性,比如你以后想买一只燕子送给你妻子,就只需要写个燕子类Swallow继承Bird方法就可以了,而不需要再在妻子类里添加一个方法listen(Swallow swallow)……上面编码没用编译器,可能有错误,请谅解!

*网上看到的一个理解多态的,感觉不错!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值