黑马程序员技术交流社区

标题: 在抽象类中使用内部类模拟Enum的不解之处 [打印本页]

作者: 赵英坤    时间: 2012-3-19 22:46
标题: 在抽象类中使用内部类模拟Enum的不解之处
public abstract class WeekDay{
        private WeekDay(){}
        public static final WeekDay MON = new WeekDay(){

                public WeekDay nextday() {
                        return SUN;
                }
               
        };
        public static final WeekDay SUN = new WeekDay(){

                public WeekDay nextday() {
                        return MON;
                }
               
        };
       
        public abstract WeekDay nextday();

        public String toString(){
                return this==MON?"MON":"SUN";
        }
}


上述代码中的内部类的使用是个什么原理?谁给解释下
作者: 泮和顺    时间: 2012-3-20 08:35
其实很简单  内部类只是简单的取覆盖了夏方法且简化书写而已 等效于》 另外做个子类然后再让他指向子类....代码class subcls extends WeekDay{

                public WeekDay nextday() {
                        return MON;
                } 而代替的对应的写public static final WeekDay MON = new subcla();

               
        }
作者: 尹震    时间: 2012-3-20 10:45
new WeekDay(){

                public WeekDay nextday() {
                         return SUN;
                 }
                 
        };
这种写法,称为匿名内部类。
//最初的形态
public abstract class WeekDay {

                private WeekDay() {} // 私有的构造方法禁止其它类调用

                // 定义对象类型为WeekDay的静态常量(final是不可改变的值)。
                final static WeekDay sunday = new WeekDay();
                final static WeekDay monday = new WeekDay();
....

//调用方法返回后一天对象,this表示当前对象
          public WeekDay nextDay(){
                if(this==sunday) return monday;
                else if(this==monday) return tuesday;
                else if(this==tuesday) return wednesday;
....
}




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