黑马程序员技术交流社区

标题: 内部类的疑惑 [打印本页]

作者: 侠客梦的懒猫    时间: 2013-12-8 22:01
标题: 内部类的疑惑
现在正在看张老师的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();
}

}
这个我理解,但是对于第一个程序,表示不明白,还望大神们帮忙!!
作者: §傻、才乖    时间: 2013-12-8 22:23
你看张老师的视频,上边那段代码演示的是枚举功能的类。是经过优化的,
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;
                }
        };
}




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