看下面代码:
public class EnumTest {
public static void main(String argsp[]){
WeekDay weekday = WeekDay.MON;
System.out.println(weekday.NextDay());
}
}
public abstract class WeekDay {
private WeekDay() {
};
// 私有的构造方法(可有可无,因为他已经是抽象类了要构造方法啥用)
public static final WeekDay SUN = new WeekDay() {
public WeekDay NextDay() {
return MON;
}
};//内部匿名类
public static final WeekDay MON = new WeekDay() {
public WeekDay NextDay() {
return SUN;
}
};
public abstract WeekDay NextDay();
public String toString(){
return this ==SUN?"SUN":"MON";
}//重写toString方法
}
上面代码就是模拟的枚举,重点不在模拟枚举上,这里只需要了解枚举的原理就OK
重点是在于,这个DEMO是个典型的内部匿名类,并且说明了抽象方法和抽象类的作用
这里我自己将代码写一遍,以便巩固基础。
抽象类的好处个人理解为一种代码编写规范,让父类无法被NEW出来,因为父类本身就没必要被NEW出来
上面代码表面上看是NEW出来了
但是紧接的大括号里面其实书写的是其子类的方法,用子类来实现父类的抽象方法
这紧接的大括号的形式又叫做内部匿名类.既是内部类,又是匿名类。