枚举、匿名内部类学习笔记
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)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
*/
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)因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
*/
相关文章推荐
- 2)Java学习笔记:匿名内部类
- java学习笔记——匿名内部类
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- Java学习笔记57. 再谈接口,兼论匿名内部类
- 学习笔记-匿名内部类
- 匿名内部类学习笔记InnerClassDemo4.java
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- 内部类学习笔记(三)匿名内部类
- 【学习笔记15】java面向对象-匿名内部类
- Java学习笔记-匿名内部类
- JAVA匿名内部类(学习笔记)
- Java学习笔记15(面向对象八:匿名对象、内部类)
- 黑马程序员_学习笔记:5) 面向对象3:多态、Object、内部类、匿名内部类
- Java SE 自学笔记9 之 抽象类、接口、内部类、匿名内部类、枚举
- Android(java)学习笔记75:匿名内部类的方式实现多线程程序
- java学习笔记21——匿名内部类
- 匿名内部类学习笔记InnerClassTest.java
- 【Java学习笔记之二十六】深入理解Java匿名内部类
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
- java学习笔记day06---匿名内部类