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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张占忠 中级黑马   /  2012-12-23 14:34  /  1554 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 郭俊生 于 2012-12-23 15:05 编辑

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


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

2,抽象的父类是多个子类具有相同功能向上抽取的结果,且因为这些功能的具体方法不尽相同,所以不定义其具体的方法体。
故而在多个子类需要具有相同功能,且具体功能的方法又不同的时候需要定义抽象的父类。
简单的说:就是需要其功能,又不能确定其具体方法时需要定义抽象的父类。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
在定义 功能时,若功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么就要将不确定的部分以抽象类的形式暴漏出去,由该类的子类去完成具体的功能。抽象类的子类中必须覆盖父类全部的抽象方法,要不然子类也是抽象类。
回复 使用道具 举报
还是从“抽象”这个词来理解:你为什么要定义一个父类呢?
要么是要从父类中获得某些具体的属性或方法,这样子类就可以继承直接调用父类属性
要么你需要不止一个类都具有一些类似的共性的方法,但是每个类自己写的这些方法都不是完全一样,那就把这些类中具有共性的方法的相似特征抽离出来,单独定义一个类,这个类中的方法必须没有方法体,因为你还要个性化这些方法,所以这时候所定义的类和方法必须是抽象的
回复 使用道具 举报
因为在面向对象过程的思想中,任何事物都可以看做一个类,例如:每个动物都需要休息,都要睡觉(sleep),而不同的动物有不同的睡觉方法,如,蝙蝠是倒挂在树上睡,小狗是爬着睡,蛇是盘着睡……等等。由此可以看出,每种动物的睡觉的方式都不一样,但转过头来思考,他们又确实都是在做着同一件事情(sleep)。因此,在JAVA中引入了抽象类这个概念。在这种情况下,我们就应该把这些具有共同特征的方法抽象出来,由子类负责这些抽象方法的实现细节。而父类仅提供此方法的名称和声明、没有方法的主体。因此子类负责重写此方法。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
感谢大家,问题已解决!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马