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多态机制

  • 2015-08-07 14:32
  • 97KB
  • 下载

java中多态实现

  • 2014-04-24 09:57
  • 603KB
  • 下载

Java多态--- 如何匹配的呢?

题目如下 匹配原则: 先: 确保参数完全匹配O的前提下,依次匹配this与super。 再: 考虑参数用super(O)渐近匹配O,依次匹配this与super 当: 存在子类覆盖父...

黑马程序员java学习笔记——面向对象的特征封装、继承和多态

感觉面向对象是在java中比较难的内容,但也是核心内容,毕竟写代码思想是很重要的,面向对象就是一种思想,精通这种思想,编程就会变的简单。下面就是我学完面向对象这一部分做的笔记。     面向对象   ...

java多态小结

  • 2012-09-09 19:32
  • 304KB
  • 下载

java中的多态

java多态一直是java的理解难点,现将java多态技术要了解的知识点简单的罗列一下。

Java多态的深度剖析

  • 2012-05-15 16:26
  • 40KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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