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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何清林 于 2014-2-23 15:33 编辑

1    类的抽象是不是多余?(代码没简化)
这是我学习的过程中迷惑的地方,请指教,以下是当时的截图


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
绝对不是,打个比方,比如我们设计汽车,我们是不是抽象出汽车必须有的一些东西,比如轮子,排气管子,也就是给我们描述事物界定一个轮廓,而真正描述事物的时候就必须按照轮廓来勾勒.

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
抽象类,使部分抽象,它是可以带有一些有方法体的方法的
接口,的所有方法都是抽象的
抽象类是模板,接口是规范

关于抽象类,带有方法的方法所描述的是子类所共有的行为,比如,Animal都有睡觉的行为,Animal类就可以写成
  1. abstract class Animal {
  2.         abstract void eat();
  3.         public void sleep(){
  4.                 System.out.println("我在睡觉。。。");
  5.         }
  6. }
复制代码

和接口相比,睡觉的方法能够限制或者抽象共同的行为。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
抽象类中有没实现的抽象方法,实例化时不能正常分配内存吧,所以不能实例化。而抽象是很多实例抽取出来的共性,利用抽象可以减少每个实例定义共性内容的内存开支
回复 使用道具 举报
从你的截图来看,可以看出,你是因为2个子类没有共性的方法所以你会觉的,Animal父类,没什么用。
但如果你的两个子类有很多共同的方法体,那么如果你不用抽象类的话,你是不是需要在每个子类中定义同样的方法?这样不就导致做重复的事了吗?
如果在抽象类中加入下面两个子类共性的方法体,不就可以不用在每个子类中重复写同样的方法了吗?
还有就是可以强制子类必须复写父类的抽象方法。
如果抽象类中都是抽象方法,可以把他定义为interface。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马