匿名内部类
/**
* 测试匿名内部类
*/
public interface Running{
//定义一个接口
void run();
//接口默认public abstract
}
class Outer3{
public void go(Running r){
//这里只是调用public接口并不是实现接口
//接口引用变量r 不是new接口 接口不可以new
//形参r对应的实参是接口的实现类的对象
r.run();
}
public static void main(String[] args) {
Outer3 o3 = new Outer3();
o3.go(new Running(){
//这里是new了一个接口Running的实现类(没有名字) 即匿名内部类
// 这么new是因为只想在这里使用一次 后续不再调用 所以不需要单独创建实现类再调用进来
//new ()是类的构造方法 ()后的{}是类的类体 内部和普通的类写法一样
public void run(){
//重写实现run()方法
//接口方法是public 实现方法要加public
System.out.println("匿名内部类没有名字,后续也不会再被调用,这里用完即丢掉");
}
//只需要实现接口的抽象方法 类就可以创建了
});
//构造方法及类体包裹在o3.go方法的()中
}
}
下一篇:抽象类和接口的区别