匿名内部类
## 三种模式:
1.
interface A {
void test();//缺省 pa 无方法体
}
public class Example {
public static void main(String[] args) {
A a = new A() {
@Override
public void test() {
System.out.println("匿名内部类省去类名遵从过程但使用仍然需要对象调用");
}
};
a.test();
}
}
运行结果:
匿名内部类省去类名遵从过程但使用仍然需要对象调用
interface A {
void test();//缺省 pa 无方法体
}
public class Example {
public static void main(String[] args) {
new A() {
@Override
public void test() {
System.out.println("匿名内部类省去类名遵从过程与对象创建过程并在结尾直接调用方法即整体看做一个对象");
}
}.test();
}
}
运行结果:
匿名内部类省去类名遵从过程与对象创建过程并在结尾直接调用方法即整体看做一个对象
interface A {
void test();//缺省 pa 无方法体
}
public class Example {
public static void testInterface(A a) {
a.test();
}
public static void main(String[] args) {
testInterface(new A() {
@Override
public void test() {
System.out.println("匿名内部类的匿名对象,直接作为方法的参数");
}
});
/*该方法实际为静态方法通过类名调用testInterface();
在括号内部传参为匿名内部类的接口对象及方法体实现*/
}
}
运行结果:
匿名内部类的匿名对象,直接作为方法的参数
个人理解:
正常接口使用过程
- 接口的声明
- 类遵从接口并实现接口的方法
- 创建该类的类对象并使用方法
匿名内部类的使用方便但只可使用一次,没有重复性(即执行一次无残留)。
第三种方法需要一个静态方法的声明,
该静态方法中形式参数为接口对象,方法体为接口对象调用接口的方法。
在简便的同时具有可重复性(一次方法声明之后可多次使用(仍需实现方法体))。