黑马程序员技术交流社区

标题: 枚举问题 [打印本页]

作者: 张开开    时间: 2012-3-9 15:53
标题: 枚举问题
看下这段代码,张老师基础加强视频中第13个视频中的,老师一直强调是子类,如下:求解???
class  EnumTest
{
        public static void main(String[] args)
        {
                WeekDay weekDay = WeekDay.SUN;
                System.out.println(weekDay.toString());
                System.out.println(weekDay.nextDay());

       
       
        }
}
class abstract WeekDay
{
        private WeekDay(){}
        public static final WeekDay SUN=new WeekDay()  //问下,这里是在子类中复写方法吗??老师在强调子类,可是我怎么没有看出new WeekDay(){}是个子类啊??这不是对象吗??
        {
                public WeekDay nextDay()
                {
                        return MON;
                }
        };
        public static final WeekDay MON=new WeekDay()
        {
                public WeekDay nextDay()
                        {
                                return SUN;
                        }
        };

        public abstract WeekDay nextDay();
作者: 戚雪晖    时间: 2012-3-9 16:34
就是new出了一个子类对象啊。
WeekDay是一个抽象类,能new吗?
因此new WeekDay(){  实现他的抽象方法 }
这不正是创建了一个子类对象吗。
作者: 欧阳博    时间: 2012-3-9 18:33
上面应该是abstract class WeekDay吧, new WeekDay(){...};  这是一个匿名内部类,在这里就相当于继承了WeekDay抽象类,就是它的一个子类
作者: 刘蕴学    时间: 2012-3-9 18:47
new WeekDay()  {}这种方式属于一个抽象类或者接口的匿名类的实例化方法,简单来说借口或者抽象类必须由子类继承或者实现其抽象方法才能使用。所以这个SUN就是weekDay的一个子类,只不过匿名类没有自己的类名而已。

在说点就是以子类创建父类的实例。
作者: H07000223    时间: 2012-3-9 19:12
private WeekDay(){}

。。。这不就是类WeekDay的构造方法嘛~~~只不过私有化了,只能内部调用

public static final WeekDay SUN=new WeekDay()  这不就是WeekDay的一个对象实例嘛。没学过单例模式?





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