Java多态性理解

来源:互联网 发布:快递打印软件免费版 编辑:程序博客网 时间:2024/05/29 15:38

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


多态的作用:消除类型之间的耦合关系。


多态存在的三个必要条件

一、要有继承;
二、要有重写;

三、父类引用指向子类对象


栗子:现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。


Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

程序小栗子:

abstract class Animal {    abstract void eat();}class Cat extends Animal {    public void eat() {        System.out.println("吃鱼");    }    public void catchMouse() {        System.out.println("抓老鼠");    }}class Dog extends Animal {    public void eat() {        System.out.println("吃骨头");    }    public void kanJia() {        System.out.println("看家");    }}class DuoTaiDemo {    public static void main(String[] args) {        function(new Cat());        function(new Dog());        Animal a = new Cat();//向上转型        a.eat();        Cat c = (Cat) a;//向下转型        c.catchMouse();    }    public static void function(Animal a) {        a.eat();        //用于子类型有限        //或判断所属类型进而使用其特有方法        if (a instanceof Cat) {            Cat c = (Cat) a;            c.catchMouse();        } else if (a instanceof Dog) {            Dog c = (Dog) a;            c.kanJia();        }    }}

Output:

吃鱼
抓老鼠
吃骨头
看家
吃鱼
抓老鼠




0 0
原创粉丝点击