A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侠客梦的懒猫 中级黑马   /  2013-12-8 22:01  /  1123 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在正在看张老师的java基础加强,对于下面讲的没有听太明白
public final static WeekDay SUN=new WeekDay(){

                @Override
                public String nextDay() {
                        // TODO Auto-generated method stub
                        {
                                if(this==SUN)
                                {
                                        return "MON";
                                }
                                else
                                {
                                        return "SUN";
                                }
                        }
                }};

为啥是内部类?
class china
{
    Shanghai sh;
china()
{
   sh=new hanghai();
}

}
这个我理解,但是对于第一个程序,表示不明白,还望大神们帮忙!!

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

1 个回复

倒序浏览
你看张老师的视频,上边那段代码演示的是枚举功能的类。是经过优化的,
SUN是WeekDay的一个对象引用,而nextDay方法之前是在WeekDay类中实现的,
而枚举是不能在外部new对象的,所以只能在内部new对象,
在WeekDay中定义抽象方法,在new对象时覆写nextDay方法,
这样这个内部类就产生了
以上这段完整代码应该是这样
public abstract class WeekDay1 {
        private WeekDay1(){}
       
        public static final WeekDay1 SUN=new WeekDay1(){

                @Override
                public WeekDay1 nextDay() {
                        // TODO Auto-generated method stub
                        return MON;
                }
        };
        public static final WeekDay1 MON=new WeekDay1(){

                @Override
                public WeekDay1 nextDay() {
                        // TODO Auto-generated method stub
                        return SUN;
                }
        };
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马