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";
}
}
如代码中所问,求大神解答
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";
}
}
如代码中所问,求大神解答
weekday不是抽象类吗?怎么能new呢?
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
上面的伪代码就是表示new 的是WeekDay的实现类,这个实现类是个匿名内部类。