package HighNewTech;public abstract class WeekDay{
private WeekDay(){}
public static final WeekDay MON = new WeekDay(){
//                  此处用的内部类是什么类型的,为何能用在这儿?
@Override
public WeekDay nextday() {
// TODO Auto-generated method stub
return null;
}

};
public static final WeekDay SUN = new WeekDay(){ @Override
public WeekDay nextday() {
// TODO Auto-generated method stub
return null;
}

};

public abstract WeekDay nextday();

public WeekDay nextDay(){
if(this == MON){
return SUN;
}else
return MON;
}
public String toString(){
return this==MON?"MON":"SUN";
}
}
如代码中所问,求大神解答

解决方案 »

  1.   

    WeekDay的子类,因为该类没有被指定名字,所以称匿名内部类
      

  2.   


    weekday不是抽象类吗?怎么能new呢?
      

  3.   

    不过看你的意思,你可以声明一个枚举(enum)类,然后定义你的工作日。
      

  4.   

    一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
    但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
    因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
    上面的伪代码就是表示new 的是WeekDay的实现类,这个实现类是个匿名内部类。
      

  5.   

    WeekDay的子类啊,不是重写了抽象方法了吗?那么就可以实例化了