Java匿名内部类

匿名内部类的全称是Anonymous inner type。注意,这里的“类”指代的是“type”,而不是class这个关键字。抽象类和接口可以使用匿名内部类。

这里是一个小的匿名内部类的demo:

public class Q {
    public static void main(String[] args) {
        A a = new A();
        a.use(new B() {
            public void show() {
                System.out.println("Anonymous inner type");
            }
        });
    }
}

class A{
    public void use(B b){
        b.show();
    }
}

abstract class B{
    abstract void show();
}

解析:A类中定义了一个成员方法use(B b),该方法接收类型为B的参数。B类为抽象类,其中定义了一个抽象方法show()。B类不能直接创建对象,必须实现抽象类B中的抽象方法才能实例化。

创建抽象类B的代码如下。以下代码只是在堆内存中创建了该对象,但并没有将该对象的地址值赋值给引用变量。怎么理解引用变量?举个例子:X x = new X();中的x就是引用变量。引用变量就代表存在在堆内存中某个对象地址值的引用,就像人的名字一样。这里没有“名字”,当然就是匿名的了。
new B(){
public void show(){
System.out.println(“Anonymous inner type”);
}
}

posted @ 2017-01-25 16:14  晚樨  阅读(106)  评论(0编辑  收藏  举报