您好,登录后才能下订单哦!
本篇文章为大家展示了java中的多态是什么意思,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。
如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。
方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。
运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:
方法重写(子类继承父类并重写父类中已有的或抽象的方法);
对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
java中的引用变量有两个类型:一个编译时类型,一个是运行时类型。编译时类型由声明该变量使用的类型决定,运行时类型由实际赋给 该变量的对象决定。如果编译时类型与运行时类型不一致,就可能出现所谓的多态。——疯狂java讲义
运行时多态的使用例子如下:
public class PolyTest5 { public void run(Car car)//这样利用公共的父类就屏蔽了子类之间的差异性,可以应对所有的车. { car.run();//只要子类继承了car都可以作为参数传入方法中.如果没有多态,就要有对应每个类的方法.非常的麻烦. } public static void main(String[] args) { PolyTest5 test = new PolyTest5(); Car car = new BMW(); test.run(car); QQ qq = new QQ(); test.run(qq);//向上类型转换. } } class Car { public void run() { System.out.println("car is running"); } } class BMW extends Car { public void run() { System.out.println("BMW is running"); } } class QQ extends Car { public void run() { System.out.println("QQ is running"); } }
多态的三要素:1.继承 2.重写 3.父类引用指向子类对象。
上述内容就是java中的多态是什么意思,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。