Java多态性理解

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


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


多态存在的三个必要条件

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

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


栗子:现实中,关于多态的例子不胜枚举。比方说按下 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:

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值