JAVA的多态性

来源:互联网 发布:手机淘宝如何投诉卖家 编辑:程序博客网 时间:2024/05/18 15:29

多态是面向对象语言中,抽象和继承之后的第三种基本特性,多态依赖于数据抽象和继承。也称做动态绑定、后期绑定或运行时绑定。多态提供给我们操控基类导出的相同接口时,会根据运行时的具体对象信息来调用不同的实现而产生正确的行为。

向上转型(upcasting)

向上转型是一种将导出类引用转换为基类引用的动作,因为从导出类转型为基类,在类继承图中是向上移动的,所以称之为向上转型。向上转型是从一个较为专用的类型转为较为通用的类型,是将接口范围变小,因此向上转型总是很安全的。就好像所有的猫都是动物,所以猫具有一个动物的所有特征和行为,和猫本身独特的行为。将猫转型成动物,一定是成立的,只是会丢失猫的一些独特行为。

/** * 向上转型 */class Animal {    public void move(int step) {        println("Animal move " + step + " step");    }}class Cat extends Animal {    public void move(int step) {        println("Cat move " + step + " step");    }}class Dog extends Animal {    public void move(int step) {        println("Dog move " + step + " step");    }}public class Begin {    public static void walk(Animal animal){        animal.move(1);    }    public static void main(String[] args) {        Cat cat = new Cat();        walk(cat);        Dog dog = new Dog();        walk(dog);    }}

在如上代码中有walk(Animal animal)方法,该方法接收一个Animal引用并调用Animal的move方法。当我们传递给他Dog和Cat的引用时,也并不会报错,并且会正确的调用其对象的方法。这有时会让人费解,编译器是如何得知这个引用所代表的具体对象是什么并且调用正确的方法。

绑定

将一个方法调用和一个方法主体关联起来称为绑定。前期绑定是在程序执行前进行的绑定,由编译器和链接程序实现。这是面向过程语言默认的绑定方式,比如C语言就只有一种绑定方式就是前期绑定。 而后期绑定则是解决上述问题的办法,也就是在运行时根据对象的类型来进行绑定,所以又叫动态绑定运行时绑定。而在JAVA中,出了static和final(private属于final)方法,所有方法都是后期绑定。

总结

因此,多态可以让我们使用基类的引用来操作导出类的对象并产生正确的行为。所以我们可以在一些地方使用基类的引用来进行操作,这样不管以后添加了多少新的导出类,对基类原有方法调用的部分都不需要改动而可以正常工作,可以设计出扩展性更强的程序。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 侍道4 侍道2 侍道4攻略 侍道3攻略 侍道2秘籍 侍道3下载 侍道2携带版下载 侍道2所有可攻略女角色 ps3侍道4攻略 侍郎 投长沙裴侍郎 侍郎是狗 兵部侍郎 礼部侍郎 兵部小侍郎 黄门侍郎 户部侍郎 三觉侍郎 侍郎 玄璃越 侍郎大人宠妻日常 侍郎大人宠妻日常 双下巴 不为侍郎妻 浅酌颜 美侍郎瓦香鸡 郭夫人落难贾侍郎 无限秘笈 刑部侍郎 侍魂 侍魂人物实力排名 侍魂2真侍魂霸王丸地狱变 侍魂胧月传说一天300万怎么搬 侍魂晓 侍魂出招表 侍魂2 侍魂胧月传说凶国攻略 侍魂2出招表 真侍魂 侍魂4天草降临 侍魂胧月传说脚本 侍魂下载 侍魂胧月传说攻略大全 剑圣侍魂 侍魂胧月传说寻宝攻略