匿名内部类
匿名内部类顾名思义,即没有名字的内部类,一般表现形式为使用父类的引用指向你一个匿名对象,方法的实现在匿名语句块中完成
eg:
Animal a = new Animal() { @Override public void sleep() { System.out.println("休眠一下"); } }; //输出地址非Animal对象,而是包含了“$”符号的对象地址(即内部类) System.out.println(a); a.sleep(); Cat c = new Cat(){ @Override public void eat() { System.out.println("吃猫粮"); } }; /* 针对以下接口创建匿名内部类对象 interface Sportable{ void run(); void jump(); } */
匿名内部类与回调机制
Button.java
public class Button { //内部接口 public interface OnClickListener{ //回调函数(钩子函数) void click(); } public void setOnClickListener(OnClickListener lis){ System.out.println("准备触发"); lis.click(); System.out.println("清理资源"); } }
ButtonTest.java
public class ButtonTest{ public static void main(String[] args) { Button btn = new Button(); //匿名内部类使用 btn.setOnClickListener(new OnClickListener() { //回调机制 @Override public void click() { System.out.println("事件被触发。。。。"); } }); } }