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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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";
        }
}


上述代码中的内部类的使用是个什么原理?谁给解释下

2 个回复

倒序浏览
其实很简单  内部类只是简单的取覆盖了夏方法且简化书写而已 等效于》 另外做个子类然后再让他指向子类....代码class subcls extends WeekDay{

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

               
        }
回复 使用道具 举报
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;
....
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马