匿名内部类:就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。
如果满足下面的一些条件,使用匿名内部类是比较合适的:
a·只用到类的一个实例。
b·类在定义后马上用到。
c·类非常小(SUN推荐是在4行代码以下)
d·给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:
a·匿名内部类不能有构造方法。
b·匿名内部类不能定义任何静态成员、方法和类。
c·匿名内部类不能是public,protected,private,static。
d·只能创建匿名内部类的一个实例。
e·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
f·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
package test10;
public class Outer {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print(String s){
//匿名内部类
Inner inner = new Inner(){
String str =s;
@Override
public void inner(){
System.out.println(str);
}
};
inner.inner();
}
public Outer() {
super();
}
public Outer(String name) {
super();
this.name = name;
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.print("Tom");
}
}