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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 班志国 中级黑马   /  2012-10-27 09:38  /  1698 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 班志国 于 2012-10-27 13:39 编辑

父类是抽象的里面有两方法子类继承了父类只覆盖了其中一个方法 那么子类也是抽象的  是不我得手动的忘子类 类名前加上abstract关键字? 还是 默认只要子类没有覆盖完所有的抽象类方法那么子类就是抽象的abstract也不用加了
  1. abstract class Fu{
  2.      abstract void eat();
  3.      abstract void sleep();
  4. }
  5. class Zi extends Fu{//只覆盖了一个抽象方法 类没有标识abstract 会不会报错呢
  6.     void eat(){
  7.         System.out.println("eat");
  8.     }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

5 个回复

倒序浏览
子类必须实现父类的全部抽象方法,而且是手动的(当然用eclipse的选项也可以自动实现),如果手动只实现了一个抽象方法,默认会异常。所以要么在未实现抽象的方法上加abstract,要么实现它。
回复 使用道具 举报
是的
子类继承父类抽象,需要完全重写。
不然提示子类存在抽象方法,
这样能把子类也声明抽象。
提示如下

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
子类如果没有覆盖完所有父类的抽象方法,子类必须手动添加修饰符abstract;lz的
abstract class Fu{       //这一个类只是简单定义了功能,而没有主体,可以定义成接口哦
      abstract void eat();
      abstract void sleep();
}
回复 使用道具 举报
要么全部复写父类方法,要么子类手动加上abstract,否则出现错误
回复 使用道具 举报
本帖最后由 高薇 于 2012-10-27 10:09 编辑

子类可以不用全部重写父类中的方法,在子类继承父类的时候,同时继承到了父类的抽象方法,如果你只想要覆盖父类中其中一个方法的话,那么子类的声明必须是抽象的,因为子类继承到了父类的另外的抽象方法了.
你的这段代码肯定是会报错的.有两个解决方法:
1.将父类中的所有抽象方法都重写
2.子类声明前加abstract关键字.
希望能帮到你!

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马