java基础:多态(动态绑定)

一、例子

运行结果:

—狗叫声—

二:分析

Dog d = new Dog("Hachi","yellow");Lady l1 = new Lady("lili",d);l1.myPetEnjoy();

调用Lady的myPetEnjoy()方法。这里有两个enjoy()方法,一个是父类Animal的,一个是Dog的。

那么真正调用谁的呢?这里有一个规则,new Lady("lili",d);堆内存中,真正的是谁,就调用谁的方法,而不是由引用Animal pet 决定的。这就是动态绑定(在java运行期,动的时候,才会去绑定。)

动态绑定的优点,可以随时扩展功能,比如Lady想养一只猫,只需要按照Dog的形式,创建一只猫。

Cat c = newCat("mimi","yellow");Lady l1 = new Lady("lili",c);l1.myPetEnjoy();

Lady内部的代码,完全不用动就可以了,这是面向对象一个很重要的特性。

三:总结

多态实现的条件

(1)要有继承

(2)要有重写

(3)父类引用指向子类对象

你怎么样对待别人被人就怎么样对待你。

java基础:多态(动态绑定)

相关文章:

你感兴趣的文章:

标签云: