package cn.itcast.day1;public class EnumTest {public static void main(String[] args) { WeekDay2 weekday2= WeekDay2.MUN; System.out.println(weekday2.nextDay().toString()); System.out.println(weekday2.nextDay());}}
package cn.itcast.day1;public abstract class WeekDay2 {private WeekDay2() {}public final static WeekDay2 SUN = new WeekDay2(){//这里居然可以new???? @Override public WeekDay2 nextDay() { return MUN; }};public final static WeekDay2 MUN = new WeekDay2(){ @Override public WeekDay2 nextDay() { return SUN; }};public abstract WeekDay2 nextDay();public String toString(){ return this == SUN?"SUN":"MUN";}}
我不理解的是WeekDay2是一个抽象类,怎么能new 呢?
追答抽象类不能直接new,但是可以通过算隐式内部类重写其抽象方法来new
比如
public abstract class A {
public static void main(String args){
A a = new A(){};
}
}
你不加{}就不行,虽然我没写任何抽象方法
可以的,我试过了
我直接复制的,没想到是这样的效果,如果你把他复制到eclipse中ctrl+shift+f一下,应该会被格式话吧。呵呵