黑马程序员技术交流社区
标题:
关于 抽象类 [提问]
[打印本页]
作者:
班志国
时间:
2012-10-27 09:38
标题:
关于 抽象类 [提问]
本帖最后由 班志国 于 2012-10-27 13:39 编辑
父类是抽象的里面有两方法子类继承了父类只覆盖了其中一个方法 那么子类也是抽象的 是不我得手动的忘子类 类名前加上abstract关键字? 还是 默认只要子类没有覆盖完所有的抽象类方法那么子类就是抽象的abstract也不用加了
abstract class Fu{
abstract void eat();
abstract void sleep();
}
class Zi extends Fu{//只覆盖了一个抽象方法 类没有标识abstract 会不会报错呢
void eat(){
System.out.println("eat");
}
}
复制代码
作者:
周万谋
时间:
2012-10-27 09:49
子类必须实现父类的全部抽象方法,而且是手动的(当然用eclipse的选项也可以自动实现),如果手动只实现了一个抽象方法,默认会异常。所以要么在未实现抽象的方法上加abstract,要么实现它。
作者:
王亚运
时间:
2012-10-27 09:51
是的
子类继承父类抽象,需要完全重写。
不然提示子类存在抽象方法,
这样能把子类也声明抽象。
提示如下
fu.jpg
(16.65 KB, 下载次数: 26)
下载附件
子类提示错误
2012-10-27 09:51 上传
作者:
徐升兴
时间:
2012-10-27 09:58
子类如果没有覆盖完所有父类的抽象方法,子类必须手动添加修饰符abstract;lz的
abstract class Fu{ //这一个类只是简单定义了功能,而没有主体,可以定义成接口哦
abstract void eat();
abstract void sleep();
}
作者:
种生祥
时间:
2012-10-27 10:01
要么全部复写父类方法,要么子类手动加上abstract,否则出现错误
作者:
高薇
时间:
2012-10-27 10:01
本帖最后由 高薇 于 2012-10-27 10:09 编辑
子类可以不用全部重写父类中的方法,在子类继承父类的时候,同时继承到了父类的抽象方法,如果你只想要覆盖父类中其中一个方法的话,那么子类的声明必须是抽象的,因为子类继承到了父类的另外的抽象方法了.
你的这段代码肯定是会报错的.有两个解决方法:
1.将父类中的所有抽象方法都重写
2.子类声明前加abstract关键字.
希望能帮到你!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2