您的位置:首页 > 其它

枚举、匿名内部类学习笔记

2015-01-21 10:34 393 查看
[java] view
plaincopy

/* ### 枚举类型复习笔记 ###

*

* JDk1.5之后引入了枚举类型,枚举定义如下:

*

* [public] enum 枚举名称{

* 枚举对象1,枚举对象2,...,枚举对象N ;

* }

*

* 1)枚举对象的定义必须要于存在相应的构造方法相对应

* 2)构造方法必须是private,从而保证构造函数只能在内部使用

* 3)枚举类型是一种类型,用于定义变量,以限制变量的赋值

* 4)赋值时通过"枚举名.值"来取得相关枚举中的值

* 5)枚举列表必须写在最前面,否则编译出错

* 6)枚举也可以象一般的类一样添加方法和属性

*

* # 枚举只有一个成员时,就可以作为一种单例的实现方式。

*

* ### 匿名内部类复习笔记 ###

*

* 1,匿名内部类其实就是内部类的简写格式。

* 2,定义内部类的前提:

* 内部类必须是继承一个类或者实现接口。

* 3,匿名内部类的格式:new 父类或接口(){定义子类的内容}

* 4,其实匿名内部类就是一个带内容的匿名子类对象。

*/

package demo;

public class EnumTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

// 枚举类型是一种类型,用于定义变量,以限制变量的赋值

// 赋值时通过"枚举名.值"来取得相关枚举中的值

WeekDay weekDay1 = WeekDay.MON;

System.out.println(weekDay1);

System.out.println(weekDay1.ordinal());

System.out.println(WeekDay.valueOf("SUN"));

System.out.println(WeekDay.values().length);

}

public enum WeekDay {

// 枚举列表必须写在最前面,否则编译出错

// 就相当于这句话:public final static WeekDay SUN = new WeekDay();

SUN,MON,TUE,WED,THI,FRI,SAT;

//构造函数只能是private, 从而保证构造函数只能在内部使用

private WeekDay(){System.out.println("first");} //构造方法

private WeekDay(int day){System.out.println("second");}//有参构造方法

}

public enum TrafficLamp{

//匿名内部类的格式:new 父类或接口(){定义子类的内容}

//其实匿名内部类就是一个带内容的匿名子类对象

RED(30){

@Override

//内部类必须是继承一个类或者实现接口

//匿名子类对象要覆盖父类的nextLamp()方法

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return GREEN;

}

},

GREEN(45){

@Override

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return YELLOW;

}

},

YELLOW(5){

@Override

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return RED;

}

};

public abstract TrafficLamp nextLamp();

// 枚举也可以象一般的类一样添加方法和属性

private int time;

private TrafficLamp(int time){this.time = time;}

}

}

/* 匿名内部类(from thinking in java 3th)

简单地说:匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?

如果满足下面的一些条件,使用匿名内部类是比较合适的:

1)只用到类的一个实例。

2)类在定义后马上用到。

3)类非常小(SUN推荐是在4行代码以下)

4)给类命名并不会导致你的代码更容易被理解。

在使用匿名内部类时,要记住以下几个原则:

1)匿名内部类不能有构造方法。

2)匿名内部类不能定义任何静态成员、方法和类。

3)匿名内部类不能是public,protected,private,static。

4)只能创建匿名内部类的一个实例。

5)一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

6)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: