黑马程序员技术交流社区
标题:
关于继承的疑惑
[打印本页]
作者:
yuanjun52306
时间:
2015-11-26 22:09
标题:
关于继承的疑惑
定义继承需要注意:
不要仅为了获取其他类中某个功能而去继承,类与类之间要有所属( " is a" )关系。
{:3_62:}什么意思谁能解释一下?
作者:
lovetonia
时间:
2015-11-27 03:06
这个视频里面应该有讲解吧我记得。其实很简单,设定继承的时候想想现实中的是不是符合逻辑就是了,好比定义“运动员”和“快递员“两个类,运动员有奔跑功能,快递员也有,总不能因为这个让快递员去继承运动员把,他们都应该是人的子类。
作者:
tansuozhey
时间:
2015-11-27 08:07
这是当然,为了获取某个功能,你可以用接口啊!
作者:
xiao15779706
时间:
2015-11-27 09:01
就是儿子和父亲的关系
作者:
Phy_zhang
时间:
2015-11-27 09:13
简单说,你总不能为了别人的某项技能就认人家做爹把?
作者:
wyasln
时间:
2015-11-27 10:13
不是一般到特殊的一般不要继承,要用功能可以组合
作者:
Little_jie
时间:
2015-11-27 10:32
is a的关系用继承,has a的关系用组合
作者:
冰霜之卅
时间:
2015-11-27 13:52
毕老师有个例子很不错。
你不能为了玩人家苹果手6s机 就叫人家爹吧?
以后不玩手机,改玩电脑了,怎么办? 你已经卖给人家当儿子了。
是的,
继承也确实能满足当前的需求 完成一样的功能,可是以后呢? 面对更多更复杂的功能和调用的时候 怎么办?
业务逻辑不清晰 功能杂乱无章。 后患无穷。 绝对不能鼠目寸光!
必须是同种类型的才可以继承!
作者:
Vincent饭饭
时间:
2015-11-27 16:44
A.猫是一种动物 cat is an anmial
B.汽车是一种交通工具 Car is a transprotation
class cat extends animal {
super();
......rewrite;
}
class Car extends Transportaion {
super();
rewirte;
}
满足功能定义用implements
作者:
wqd123
时间:
2015-11-27 21:56
楼上说的很精辟
作者:
weichengnian
时间:
2015-11-27 23:13
。。。 呼呼 这也是我不懂的
作者:
xiaoziyk
时间:
2015-11-27 23:46
如果说程序员和项目经理两个类,他们都有敲代码的方法,这时候就不能用项目经理去继承程序员,应该向上抽取一个员工类.就是不要只为了一个敲代码的方法就随便继承
作者:
yuanjun52306
时间:
2015-11-28 18:36
谢谢大家的解答啊,怎么系统没有提醒啊{:3_46:}
作者:
萧未然
时间:
2015-11-28 19:07
比如狗会睡觉,人也要睡觉,不能为了得到睡觉的功能,而继承狗吧
作者:
萧未然
时间:
2015-11-28 19:09
xiaoziyk 发表于 2015-11-27 23:46
如果说程序员和项目经理两个类,他们都有敲代码的方法,这时候就不能用项目经理去继承程序员,应该向上抽取一 ...
说的对。
作者:
yuanjun52306
时间:
2015-11-28 19:22
本帖最后由 yuanjun52306 于 2015-11-28 19:42 编辑
看了大家的解答,我总结一下:
1、什么时候用继承
首先我认为初学者不用太深究,经验不足时会花很长时间也想不通,就算当时想通了也作用不大,这个问题可以简单的理解为:
继承需要是子父类的关系
(猫可以继承动物类,但是猫不能去继承狗类,尽管有些功能相同),这就是所谓的“不要仅为了获取其他类中某个功能而去继承”。“is a”→cat“是一个”animal(cat “is not a” dog,所以cat不能继承dog,现实中也是不合逻辑的)
2、什么时候用组合(接口)
“has a”→cat“有一个”run功能。而蝴蝶也属于动物类,它的run方法是飞“fly”。所以可以把run这个功能抽象为一个接口,此时父类animal就不需要run这个方法了,子类继承父类也不会有run方法,但可以通过实现接口的方式实现run的功能。这么做的目的我也不是很清楚,大概就是:即使父类产生了变更,子类也不会受到影响(因为run方法不是从父类继承的,而是通过单独的接口实现的)
具体原因看这里:http://www.importnew.com/12907.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2