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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔九 中级黑马   /  2013-2-21 20:05  /  1264 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.day1;

public class EnumTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
         WeekDay weekDay=WeekDay.MON;
         System.out.println(weekDay.nextDay());

        }

}
public abstract class WeekDay {
        private WeekDay(){}
        public static final WeekDay MON=new WeekDay(){此句如何解释

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

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

}

5 个回复

倒序浏览
这是一个匿名内部类
匿名内部类:
1)就是内部类的简写格式。
2)定义内部类的前提:内部类必须是继承一个类,或者实现接口。
3)匿名内部类的格式:new 父类或接口(){定义子类内容}。
4)其实,匿名内部类就是一个匿名子类对象。就是带内容的对象。

匿名内部类有什么作用呢?
类的装载需要消耗系统资源,使用匿名内部类可以节约系统资源,而且,匿名内部类增强了封装。
回复 使用道具 举报
1.创建一个类实现抽象类WeekDay 。
2.new 实现类抽象类WeekDay的实例对象。
回复 使用道具 举报
个人理解:首先这不是一个枚举,该类没有用enum修饰。
而该类就好比给WeekDay定义了两个子类,Mon和Sun,在创建这两个子类的时候通过匿名内部类复写nextDay()方法
感觉这像一个自定义的枚举
我写了一个常规的枚举
public enum WeekDay {
        SUN()
        {
                public WeekDay nextDay()
                {
                        return MON;
                }
        },
        MON()
        {
                public WeekDay nextDay()
                {
                        return TUE;
                }
        },
        TUE()
        {
                public WeekDay nextDay()
                {
                        return WEN;
                }
        },
        WEN()
        {
                public WeekDay nextDay()
                {
                        return THU;
                }
        },
        THU()
        {
                public WeekDay nextDay()
                {
                        return FRI;
                }
        },
        FRI()
        {
                public WeekDay nextDay()
                {
                        return SAT;
                }
        },
        SAT()
        {
                public WeekDay nextDay()
                {
                        return SUN;
                }
        };
        private WeekDay(){}
        public abstract WeekDay nextDay();
}



public static void main(String[] args) {
               
                WeekDay weekday = WeekDay.SAT;
                System.out.println(weekday.nextDay());
               
        }
回复 使用道具 举报
WeekDay MON=new WeekDay(){...};
=右边,是一个匿名内部类对象。格式:new 父类/接口{实现方法};
说明这个对象继承了WeekDay类
左边简单了,父类引用指向子类对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马