黑马程序员技术交流社区

标题: 关于抽象类的问题? [打印本页]

作者: 张占忠    时间: 2012-12-23 14:34
标题: 关于抽象类的问题?
如果,子类继承了抽象的父类! 就必须,要继承父类中所有的抽象法!
不然就会报错。
我想问,在什么情况下,才需要定义抽象的父类呢?
作者: 郭俊生    时间: 2012-12-23 14:53
本帖最后由 郭俊生 于 2012-12-23 15:05 编辑

“如果,子类继承了抽象的父类! 就必须,要继承父类中所有的抽象法!
不然就会报错。
我想问,在什么情况下,才需要定义抽象的父类呢?”


1,子类继承抽象父类,如果子类没有覆写其父类中所有的抽象方法时,子类也必须是抽象的,不然就会报错!

2,抽象的父类是多个子类具有相同功能向上抽取的结果,且因为这些功能的具体方法不尽相同,所以不定义其具体的方法体。
故而在多个子类需要具有相同功能,且具体功能的方法又不同的时候需要定义抽象的父类。
简单的说:就是需要其功能,又不能确定其具体方法时需要定义抽象的父类。
作者: 焦健    时间: 2012-12-23 15:15
在定义 功能时,若功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么就要将不确定的部分以抽象类的形式暴漏出去,由该类的子类去完成具体的功能。抽象类的子类中必须覆盖父类全部的抽象方法,要不然子类也是抽象类。
作者: filter    时间: 2012-12-23 15:22
还是从“抽象”这个词来理解:你为什么要定义一个父类呢?
要么是要从父类中获得某些具体的属性或方法,这样子类就可以继承直接调用父类属性
要么你需要不止一个类都具有一些类似的共性的方法,但是每个类自己写的这些方法都不是完全一样,那就把这些类中具有共性的方法的相似特征抽离出来,单独定义一个类,这个类中的方法必须没有方法体,因为你还要个性化这些方法,所以这时候所定义的类和方法必须是抽象的
作者: 杨雯雯    时间: 2012-12-23 16:38
因为在面向对象过程的思想中,任何事物都可以看做一个类,例如:每个动物都需要休息,都要睡觉(sleep),而不同的动物有不同的睡觉方法,如,蝙蝠是倒挂在树上睡,小狗是爬着睡,蛇是盘着睡……等等。由此可以看出,每种动物的睡觉的方式都不一样,但转过头来思考,他们又确实都是在做着同一件事情(sleep)。因此,在JAVA中引入了抽象类这个概念。在这种情况下,我们就应该把这些具有共同特征的方法抽象出来,由子类负责这些抽象方法的实现细节。而父类仅提供此方法的名称和声明、没有方法的主体。因此子类负责重写此方法。
作者: 张占忠    时间: 2012-12-25 18:12
感谢大家,问题已解决!




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