A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 傻瓜一点红 高级黑马   /  2013-5-5 19:30  /  2661 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 傻瓜一点红 于 2013-5-5 22:51 编辑

请问为什么要使用这个抽象类,因为抽象类里的方法在子类中还得重新复写,那还不如直接写在子类中就得了,为什么还要抽取出去弄一抽象方法,感觉显得有点多余,要说是接口吧还好理解,但就想不明白这个抽象类,请求大虾指点为什么要使用这个抽象类?使用这个抽象类有什么意义?有点懵:dizzy:

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

9 个回复

倒序浏览
抽象类抽取的是对象的共性方法,但是方法的内容是不确定的。
抽象类的定义可以强迫子类去做一些事儿
子类继承了抽象类就必须复写抽象方法
否则不能实例化

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1 25分啦

查看全部评分

回复 使用道具 举报
使用抽象类,为了防止别人去随意的创建一些无意义的对象,就好比animal动物这个类,
在现实生活中是不存在的,你去创建出的对象也没有任何意义。
为什么要定义抽象方法,还要给子类去实现,
就好比动物有吃的方法,动物类去实现他是不是没什么意义,
但是他的子类就必须去实现他,动物那肯定要吃东西啊!对不?
只有具体到了猫,狗之类的,就可以明确它吃什么?

这样是不是比较靠谱,只要去继承它,那肯定要符合一些基本的要求,是一类东西,是吧?

希望能帮到你?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。当然你也可以把抽象类都写成非抽象类,但是这样没有必要。

而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
极限冰风 发表于 2013-5-5 19:53
其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为 ...

如果说是有个提示作用还好理解一些,如果说是共性的东西非要抽取出来弄个抽象类,就纠结了:L
回复 使用道具 举报
个人觉得 接口的方法必须都是抽象的;
             而抽象类则可以不必这样,它的一些方法可以具体化,可以由它的子类所继承,只要有部分的抽象方法就可以了。
满足各种口味啊~
回复 使用道具 举报
$love 发表于 2013-5-5 19:52
使用抽象类,为了防止别人去随意的创建一些无意义的对象,就好比animal动物这个类,
在现实生活中是不存在 ...

强迫子类去做,这个到是明白,但假如在设计一种东西时,可以把这个方法直接写在子类中就得了,也没必要抽取出来弄抽象类啊,如果说是防止别人随意创建无意义的对象,那我可以弄一抽象类,也没必要抽取出共性弄了抽象方法啊,这样代码不就多了吗?还是有些不明白:dizzy:
回复 使用道具 举报
chouwayメ 发表于 2013-5-5 20:05
个人觉得 接口的方法必须都是抽象的;
             而抽象类则可以不必这样,它的一些方法可以具体化,可 ...

接口或抽象类(因抽象类可以没有抽象方法)到是还好理解,弄得懵的是看好多例子中都是非弄一抽象方法,这就让人想不通了,直接写在子类中不就得了吗,想不明白:L
回复 使用道具 举报
如果问题解决请再次编辑,修改为已解决,若还有疑问,请继续追问
回复 使用道具 举报
曹睿翔 发表于 2013-5-5 22:39
如果问题解决请再次编辑,修改为已解决,若还有疑问,请继续追问

刚在学习了,不好意思:D
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马