问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我怎么感觉在java中多态没什么用呢。我举个例子。

发布网友 发布时间:2022-05-27 20:56

我来回答

5个回答

热心网友 时间:2024-03-21 06:40

多态给我们带来的好处,可以归纳为如下5点:

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。如图8.1 所示。

(点击查看大图)图8.1 可替换性

2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。如图8.2所示。

(点击查看大图)图8.2 可扩充性
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。

图8.3 多态接口性

4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。

5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。但在Java中,除了final类和一定条件下的final方法外,所有方法都由JVM在运行期间进行动态绑定。

参考资料:http://book.51cto.com/art/200906/131711.htm

热心网友 时间:2024-03-21 06:40

就算在c++里 a ff=new b(): 这个也只能调用父类中的东西不能调用子类中的东西

热心网友 时间:2024-03-21 06:41

......................“大家看这个ff只能调用父类中的东西不能调用子类中的东西”?
应该是只能调用子类的东西。

在有多个子类时,利用多态使代码利于维护。

热心网友 时间:2024-03-21 06:41

我嘞个去,竟然还有人说多态没有用的。
我且说明一点,如你:
父类:
public class A{
public void a(){
System.out.println("a");
}
}
子类1:
public class A1 extends A{
public void a(){
System.out.println("a1");
}
}
子类2:
public class A2 extends A{
public void a(){
System.out.println("a2");
}
}
测试类如下:
public class Test{
public static void main(String[] args){
A a = new A();
A a1 = new A1();
A a2 = new A2();
a.a();
a1.a();
a2.a();
}
}
毫无疑问,结果如下:
a
a1
a2
为啥它能够正确地调用a()方法呢,因为多态、动态绑定。
这也就是说,当你有一个基类,比如说形状类Shape,然后其有一个方法getDesc()获得其描述。Shape的子类Circle,Triangle,各自重载其父类的getDesc()方法,Circle的getDesc()返回“我是圆形”,Triangle的getDesc()返回“我是三角形”。然后某一个类的某一个方法如下:
String test(Shape shape){
return shape.getDesc();
}
你在调用test()方法时可里往里面传的参数类型可以是Shape、Circle或Triangle,多态能够保证getDesc()方法被正确调用,这叫动态绑定,从而你不用写三个如下的方法,即test(Shape s),test(Circle c),test(Triangle t)。
我嘞个去,没有多态,那还叫面向对象吗?!

参考资料:Thinking in java.

热心网友 时间:2024-03-21 06:42

saaoiqwoqouiyew
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机有东西要更新了 在家没有无线 办夜间流量包可以嘛 3G流量可以... 联通3g卡有包3072M,就是3G流量这个套餐吗? ...偷偷改时间补打卡记录,补完把时间调回去了,里面会有时间修改过的记录... ...是以前打的卡就会有变动,打出来的考勤是调整时间以后的吗?_百度知 ... 梦见背喜欢的女孩的预兆 相比互联网超越1号,凡尔赛plus有什么弊端? 相比尊享福重疾险,凡尔赛plus重疾险有啥亮点? 凡尔赛plus有哪些优点? 相比达尔文6号重疾险,凡尔赛plus重疾险能有哪些亮点? 如果是女孩去日本上学,安全吗? 20款迈锐宝xl550t锐动版如何OTA升级? ...北方的习俗,如果家中有80岁老人去世,恰遇36岁逢九年,有什么忌讳? 18款迈锐宝xl可以ota升级吗 我是问一下今年的鼠年是夲命年,需要注意什么? 鼠年36岁有病怎样化解? 鼠年需要忌讳点什么? 谁给我说下多态有啥用啊,给我举个例子 ISBN后面的10位数字为别表示什么意思? 设一组初始记录关键字序列为(15、17、18、22、35、51、60)。要求计算出... 鼠年到了有什么禁忌吗? 男人对钱没有概念是不是智商问题? 2140029818这十位数字代表什么意思? 有一组关键字序列(13,16,6) 十位数是什么意思? 36岁生日有什么讲究盘点36岁生日禁忌 设有一组初始记录关键字为(45,23,65,12,10,35,89,70),要求构造一棵二叉... 设有一组记录的关键字为[19,14,23,1,68,20,84,27,55,11,10,79],用... 设有一组关键字序列(34,76,45,18,26,54,92),则由这组记录关键字生成的二... 设有一组关键字{19,01,23,14,55,20,84,27,68,11,10,77},采用哈希函数... (6)设有一组关键字(9,01,23,14,55,20,84,27),采用哈希函数:H(key)=... 今年鼠年,老公刑太岁,我冲太岁有啥忌讳? 想问一下大师,鼠年养猫有什么忌讳? 鼠年本命年,手上能不能戴穿红绳的招财猫,猫是鼠天敌,忌讳吗?请专业人士... 雪佛兰迈锐宝XL怎么样 混合动力版车型配置升级 有知道石木门的讨论一下哦 求玩绝地求生大逃杀不卡的加速器! 前天我在网上发现香蕉皮网站,据说可以回收各类家电,可以进行公益捐赠... 江西赣州旧家电回收哪里好 哪里有上门回收旧家电的? 为什么锌业股份没有市盈率? 锌业投份什么时候出年报 山西中瑞天悦贸易有限公司怎么样? 成都中瑞天悦天玺怎么样?好不好?值不值得买? 现代舞包括什么 四川中瑞天悦中层干部管理层有哪些人? 中骏天悦的在售情况? 成都天纳公寓倍誉怎么样 中粮·天悦·悦茏雅苑怎么样?好不好?值不值得买? 什么是现代舞,哪个舞种可以代表中国? 成都天悦MO境具体信息?