java多态

原创 2016年08月30日 14:44:00

为什么要用多态?
就是为了方便指挥,利于扩展。
代码里也是需要调度的。多态其实就是一个智能化的体现,比如调用同一个方法,不同对象会有不同的相应。
举个例子:山林里有很多动物,动物国王发布号令,“叫”。各种动物都会开始叫,至于叫声,每个动物都有自己叫法。

怎么实现多态呢?
首先要有个父类,然后子类重写父类的方法。父类引用指向子类对象,这样用父类就可以发布号令了,不同的子类就可以做出不同的相应,从而实现多态。

举个例子:

public class Test {
    public static void main(String[] args) {
      show(new Cat());  // 以 Cat 对象调用 show 方法
      show(new Dog());  // 以 Dog 对象调用 show 方法

      Animal a = new Cat();  // 向上转型  
      a.eat();               // 调用的是 Cat 的 eat
      Cat c = (Cat)a;        // 向下转型  
      c.work();        // 调用的是 Cat 的 catchMouse
  }  

    public static void show(Animal a)  {
      a.eat();  
        // 类型判断
        if (a instanceof Cat)  {  // 猫做的事情 
            Cat c = (Cat)a;  
            c.work();  
        } else if (a instanceof Dog) { // 狗做的事情 
            Dog c = (Dog)a;  
            c.work();  
        }  
    }  
}

abstract class Animal {  
    abstract void eat();  
}  

class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  

class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}  

输出结果为:
吃鱼
抓老鼠
吃骨头
看家
吃鱼
抓老鼠

注意:当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java基础之多态ppt

  • 2017年11月11日 18:00
  • 1.14MB
  • 下载

java多态机制

  • 2015年08月07日 14:32
  • 97KB
  • 下载

Java基础之面向对象(封装、继承、多态)

一、面向对象的概念         面向对象是程序设计的一种思想,是从面向过程编程演变而来的。举一个例子,我们如何把大象装冰箱里,按照面向过程的思想来回答这个问题就是:1、把冰箱门打开;2、把大象放冰...

java中多态实现

  • 2014年04月24日 09:57
  • 603KB
  • 下载

java的三大特性之多态

面向对象编程有三大特性:封装、继承、多态。       封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访...

JAVA基础知识点梳理九:多态

Java基础知识点梳理

Java多态的深度剖析

  • 2012年05月15日 16:26
  • 40KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java多态
举报原因:
原因补充:

(最多只允许输入30个字)