2 qq 33157614 qq_33157614 于 2016.03.08 15:58 提问

求大神回答我的疑问,这是关于多态的解释

鸟类封装了 翅膀类和moo方法;另外有两个类都继承鸟类并重写了moo方法,分别是鹦鹉和麻雀如下:
鹦鹉类:
public class Parrot extends Bird{
public void moo(){
System.out.println("鹦鹉的叫声");
}
}
麻雀类:
public class Sparrow extends Bird{
public void moo(){
System.out.println("麻雀的叫声");
}
}
方法重写应该懂吧,不懂自己找书看吧;然后你有个妻子她想听鸟叫,就有个妻子类
public class Wife{
public void listen(Bird bird){
bird.moo();
}
/*这时多态就很好的体现了,你妻子想听鸟叫,无论什么鸟都可以给她,但是你想让她和鹦鹉
*说话,你就买了一只鹦鹉传给listen方法,结果你妻子听到了鹦鹉的叫声,程序输出:鹦
*鹉的叫声
*/
public static void main(String[] args) {
new Wife().listen(new Parrot());
}
}

我想问的是:
这样是多态比较简单,但假如我不用妻子类,直接在main方法里new对象,这样要加燕子的声音,直接new燕子,不还是只需要写个燕子类就行了吗,还更简单,new Parrot().moo;
new Swallow().moo;.....,连继承都不用了。。。,反正只需要声音,不一定要妻子

3个回答

u010113247
u010113247   2016.03.08 16:13
已采纳

1.妻子类,只是调用了Bird的方法,是不参与继承的,但是妻子类是展示了多态的好处,不论你是鹦鹉还是什么别的,都可以通过Bird类来调用,而且虽然写的都是moo方法,实际调用却是各自不同的moo方法
2.连继承都不用了这个思想就不对,为什么要用继承,最大的好处就是代码简单了,重复的东西只要写一次。如果你不使用继承,那燕子鹦鹉两个类里面会有重复的部分:翅膀。

u010113247
u010113247 谈不上好处,但是java是面向对象的,你想在main方法里面听鸟叫没有什么实质问题,但是放到一个具体的类里面,更好的体现了面向对象
2 年多之前 回复
qq_33157614
qq_33157614 哦,我明白了,,还有个问题,为什么要单独写个妻子类,把他合并到main方法可以吗,这样有什么好处
2 年多之前 回复
qq915845584
qq915845584   2016.03.08 16:09

注意有一个前提
妻子要听鸟叫

如果妻子不听鸟叫,直接用你那样写就可以

你这是语文没学好

qq519934599
qq519934599 对,“有声音”和“让妻子听见”是两回事。
2 年多之前 回复
enpterexpress
enpterexpress   Rxr 2016.03.08 16:19
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
什么是区块链?这是我见过的最通俗易懂的解释
什么是区块链?这是我见过的最通俗易懂的解释 最近区块链非常火,关注度和曝光度持续上升,国内众多巨头公司纷纷张开双臂拥抱,把区块链当做互联网时代的伟大颠覆性创新,一窝蜂研究怎样把区块链变成自己抢占商业先机的工具。 那么,区块链技术究竟是什么呢?分开看每个汉字都认识,但是凑在一起就不知道是什么意思了。针对大家觉得神秘无比的区块链,现在有了一个最通俗易懂的解释方式。 什么是区块链?
为什么年轻时要多赚钱?这是我听过最好的回答
有很多人曾经说,年轻就是要逍遥自在,要那么多钱干什么,你这个人这是俗耶,恋爱恋爱就是浪漫起头,浪漫在前,赚钱在后...然而,殊不知,这些人手上的钱都是父母亲辛辛苦苦省吃俭用下来的,哪有那么多富豪,有的大部分都是普普通通的老百姓,父母亲也会老,而且是以快于我们长大的速度在老,小时候,我们没钱没力养活自己,就要靠父母亲,那么长大之后,父母亲需要我们的时候,你好意思说爸妈我没钱或者爸妈我还完各种各样的贷
要孩子是为了什么?这是我见过最感动的回答…
现代父母是一边养孩子,一边修行。有的父母在养孩子中参悟人生,有的父母在纠结的亲子关系中苦苦求索……所以,上帝给每个匆忙赶路的灵魂分配了可爱的天使,小天使的到来,安抚了匆忙的脚步,让急匆匆赶路的旅人有了反观自我内在的时刻。牵起那只慢蜗牛去散步吧! 它会给你不一样的人生体验!
多态之运算符重载(一)
1.运算符重载定义: C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运
JAVA多态理解(包含他人经典例子)
引言:理解JAVA多态应先理解JAVA继承、封装。 一、什么是多态 面向对象编程有三个特征,即封装、继承和多态。 1. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。        2.继承是为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢?       3. 方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因
这几个excel神操作,让你从入门到大神 ,涨完工资再来谢我……
没有几年的工作经验,没有学习过一些excel技巧,我们往往不会进行excel的一些高级操作,只会知道其中的一些皮毛而已,对于想成为大神级别的存在,我们到底要使用那些操作技巧呢?小编就简单和你们分析一下: 一.快速移动/替换数据 有时候我们想要将数据进行移动或者进行替换我们该怎么操作,毕竟使用粘贴/复制比较麻烦,其实我们可以使用比较便捷的方法进行操作: 步骤/方法 1.首先我们选择自己需
面试时关于“我们为什么要录用你?”回答技巧
招聘者的目的是:我并不真正在乎“经验”,关键是应聘者的心态,是否有克服自身困难   的信心和决心,工作是否有责任性。   应聘者应该做到:1、对这个问题的回答最好要体现出应聘者的诚恳、机智、果敢及敬业。   2、说出自己的观点:“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期间,我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂
关于机器人的一些疑问
本篇记录一些关于机器人的疑问,并进行收集资料与解答。1.在运动规划里,机器人怎么获得障碍物的信息?在仿真里,障碍物在哪应该是知道的,不知道信息,怎么进行规划?   机器人的感知,现在是怎么做的,机器人要走进千家万户,要靠感知方面的突破吗?2....
多态的典型例子
多态的典型例子
Java回顾篇——多态性深入理解。
是一个Java的编程人员就知道,在以后项目开发的时候,我们的多态性几乎天天用。 小编和读者今天就来深究一下多态性的一些细节。 首先我们要知道多态性的三个必要满足的条件: 1.有继承 2.有方法的重写 3.有父类引用指向子类对象 接下来我们来分析以下代码:(经典) package objectandclass; class A { public void sho