匿名内部类实际上就是没有名称的内部类
当接口或类里面只有一个抽象方法时,没有必要另建一个类来继承这个类或接口来实例化仅仅一个方法,就直接在main函数里直接现 建一个匿名内部类来重写方法体
new 要实现的接口或抽象类(){ 要重写的方法体 };
一整个就相当于一个父类或接口的子类对象
调用方法可以直接 .方法名 或者用接口或父类对象来接收 Animal a=new Animal(){ ... }; a.eat();
可以通过匿名内部类访问局部变量,不用加final关键字,java默认此局部变量是final类型
同理接口也有匿名内部类
有一个接口Inter,里面有抽象方法method,一般来说要新建一个类c来实例化method方法,然后在main里面调用c类的对象来调用重写的method方法
但是通过匿名内部类就不用在建c类了
如果想通过function方法调用实例化的method 需要inter类型参数,这时别忘记 new 接口(){..};
一整个就是一个继承接口的子类对象,所以直接把一整个作为参数,如图