黑马程序员技术交流社区

标题: 关于覆盖的问题 [打印本页]

作者: 会飞的狼    时间: 2013-8-10 23:06
标题: 关于覆盖的问题
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,求大神帮我解决一下啊。
作者: 黑马李昂    时间: 2013-8-10 23:45
  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:}
作者: 会飞的狼    时间: 2013-8-10 23:47
黑马李昂 发表于 2013-8-10 23:45
希望能帮到楼主

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

我那个public string toString(){}是匿名内部类,覆盖外面的
作者: 黑马李昂    时间: 2013-8-11 01:05
不好意思楼主看错你的代码{:soso_e112:},public string toString(){}是匿名内部类的方法,但是楼主要注意public string toString(){}是Object类的方法,覆盖父类Object类的子类toString的方法权限大于父类权限,要用public

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

这次是否能帮到楼主,与楼主共同学习{:soso_e100:}
作者: 会飞的狼    时间: 2013-8-11 01:25
黑马李昂 发表于 2013-8-11 01:05
不好意思楼主看错你的代码,public string toString(){}是匿名内部类的方法,但是楼主要注意p ...

哦 是的,object里面有个tostring方法,我忘了这茬,谢谢你啊




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