匿名内部类适合那种只需要使用一次的类
注意:
1.匿名内部类没有访问修饰符
2.匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢。
package cn.txt.Integer;
/**
* 测试匿名内部类
* 适合那种只需要使用一次的类
* @author Administration
*
*/
public class TestAnonymousInnerClass {
public static void test01(AA a) {
a.aa();
}
public static void main(String[] args) {
// TestAnonymousInnerClass.test01(new fun());
TestAnonymousInnerClass.test01(new AA() {
public void aa() {
System.out.println("测试");
}
});
}
}
//class fun implements AA{
//
// @Override
// public void aa() {
// System.out.println("测试");
//
// }
//}
interface AA{
public void aa();
}
以上代码是用匿名内部类的 下面代码是没有用匿名内部类的 对比就可发现其特点
package cn.txt.Integer;
/**
* 测试匿名内部类
* 适合那种只需要使用一次的类
* @author Administration
*
*/
public class TestAnonymousInnerClass {
public static void test01(AA a) {
a.aa();
}
public static void main(String[] args) {
TestAnonymousInnerClass.test01(new fun());
}
}
class fun implements AA{
public void aa() {
System.out.println("测试");
}
}
interface AA{
public void aa();
}
下面代码中如果要调用test01() 则需要传入一个实参,而AA是一个接口不能直接new的,所以TestAnonymousInnerClass.test01(new AA());
是不能被编译的 ,只能写一个它的实现类fun来实现。
而上面使用匿名内部类的则可以不用写它的实现类,在TestAnonymousInnerClass.test01(); 中直接定义一个没有名字的匿名内部类