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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 会飞的狼 中级黑马   /  2013-8-10 23:06  /  1816 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

abstract class WeekDay{
public final static WeekDay SUN=new WeekDay(){
  public WeekDay getNextDay(){
   return MON;
   }
  public String toString(){
   return "SUN";
  }
};

abstract WeekDay getNextDay();
abstract String toString();//用myeclipes编辑的时候提示说这行代码前面要加public,可是我的子类覆盖方法是public的啊,权限比较大啊,奇怪的是上面一行就不提示加public,求大神帮我解决一下啊。

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 写代码上加上一定的注释有利于你对知识的巩.

查看全部评分

6 个回复

倒序浏览
  1. abstract class WeekDay{
  2. public final static WeekDay SUN=new WeekDay(){
  3. public WeekDay getNextDay(){//这里不写public不报错的原因是:这里是抽象类的匿名内部类,覆盖抽象类的抽象方法WeekDay getNextDay();
  4. //默认权限是public abstract,可以省略不写,所以java虚拟机不报错
  5. return MON;
  6. }
  7. public String toString(){//因为此方法需要被其他类或外部类调用,所以要写public作为权限
  8. return "SUN";
  9. }
  10. };
复制代码
希望能帮到楼主{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 帮助别人就是巩固自己,还可以拿分。继续加.

查看全部评分

回复 使用道具 举报

我是父类的方法啊,要在子类覆盖掉,不写不是更容易覆盖吗?
回复 使用道具 举报
abstract class WeekDay这里是抽象类,抽象类中存在抽象方法和普通方法
public String toString(){//这里是普通方法不是抽象方法,不需要覆盖,建立对象直接调用,需要public权限
   return "SUN";
}
如果是:String toString();//这里是抽象方法,需要建立子类对象覆盖,权限是默认public abstract,可以不写
回复 使用道具 举报
黑马李昂 发表于 2013-8-11 00:00
abstract class WeekDay这里是抽象类,抽象类中存在抽象方法和普通方法
public String toString(){//这里是 ...

我那个public string toString(){}是匿名内部类,覆盖外面的
回复 使用道具 举报
不好意思楼主看错你的代码{:soso_e112:},public string toString(){}是匿名内部类的方法,但是楼主要注意public string toString(){}是Object类的方法,覆盖父类Object类的子类toString的方法权限大于父类权限,要用public

而public WeekDay getNextDay()是你自定义的抽象类方法,默认权限public abstract

这次是否能帮到楼主,与楼主共同学习{:soso_e100:}
回复 使用道具 举报
黑马李昂 发表于 2013-8-11 01:05
不好意思楼主看错你的代码,public string toString(){}是匿名内部类的方法,但是楼主要注意p ...

哦 是的,object里面有个tostring方法,我忘了这茬,谢谢你啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马