黑马程序员技术交流社区

标题: 抽象方法不能有方法主体的原因? [打印本页]

作者: 李哲    时间: 2012-3-27 09:40
标题: 抽象方法不能有方法主体的原因?
抽象类中抽象方法没有方法主体的原因?
作者: 王国华    时间: 2012-3-27 09:45
它是抽取共性方法的结果,是抽象的没有具体的实现方法。
比如说我们吃饭每一个人怎么吃都不相同,我们就抽取吃饭作为一个抽象方法,
就是每一个都要有的方法,具体怎么吃就要我们每一个人就是实例对象去实现。
作者: 刘蕴学    时间: 2012-3-27 09:48
抽象方法只是规定了一种行为,但是具体怎么做,这个是由子类去实现的

如果这些子类在做这种行为的时候,有些地方是一样的,那么也可以不用直接抽象,这会造成代码重复,这时候使用非抽象的实体方法来定义共有的行为,子类只需要实现那些不一样的部分就可以
作者: 一蓑烟雨任平生    时间: 2012-3-27 09:57
因为在面向对象的编程的思想中,任何事物都可以看做是一个类。例如:每个动物都需要睡觉(sleep),而不同的动物有不同的睡觉方法.如,蝙蝠是倒挂在树上睡,小狗是爬着睡,蛇是盘着睡……等等
而他们是在做同一件事,睡觉(sleep),子类继承父类后,子类必须重写这个方法,由子类负责这些抽象方法的实现细节。
作者: izwj    时间: 2012-3-27 10:03
当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。
作者: 杨波    时间: 2012-3-27 10:05
拥有抽象方法的类就是抽象类,抽象类不能被实例化只能被继承,那么其内部的方法必须被子类重写,有无方法实体都没有意义。
抽象类的出现是为了将抽象复用及实现复用剥离开来,实现多特。
作者: 〆_xin_、_跳    时间: 2012-3-27 10:09
抽象方法为的是重用性,比如吃:每个人想吃的东西不同,吃馒头的人实现抽象类的eat抽象方法,吃大米饭的人实现抽象类中的eat抽象方法。如果可以有方法体的话,就失去了抽象类的意义了。
作者: 李见黎    时间: 2012-3-27 11:55
抽象方法只是定义了一种标准,但是具体怎么做,这个是由子类去实现的
如果这些子类在做这种行为的时候,有些地方是一样的,那么也可以不用直接抽象,这会造成代码重复,这时候使用非抽象的实体方法来定义共有的行为,子类只需要实现那些不一样的部分就可以。抽象方法为的是实现代码的重用性。
作者: 李井山    时间: 2012-3-27 12:00
抽象类中抽象方法没有方法主体的原因?
抽象类是不能实例对象的,只能new他的子类,他的子类复写了抽象方法,用他的时候用的是他子类的方法。所以即使抽象方法中写上代码,也是用不到的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2