Java匿名类

实际使用中我们只需注意这几点儿:
      1. 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
      2. 匿名内部类中是不能定义构造函数的。
      3. 匿名内部类中不能存在任何的静态成员变量和静态方法。
      4. 匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
      5. 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

匿名类的语法

Runnable hello = new Runnable() {  
    public void run() {  
        System.out.println("hello");  
    }  
};
一个匿名类由以下几个部分组成:

new操作符
Runnable:接口名称。这里还可以填写抽象类、普通类的名称。
():这个括号表示构造函数的参数列表。由于Runnable是一个接口,没有构造函数,所以这里填一个空的括号表示没有参数。
{…}:大括号中间的代码表示这个类内部的一些结构。在这里可以定义变量名称、方法。跟普通的类一样。
 
 
匿名内部类方法的访问:
//方法1:直接在new A内部类后边加点加方法,这样访问,如果方法多了,调用太麻烦
new D(){
    @Override
    public void ShowContext() {
        System.out.println("hello");
    }
}.ShowContext();

//方法2:通过创建对象来访问,多态思想
D a=new D(){
    @Override
    public void ShowContext() {
        System.out.println("hello");
    }
};
a.ShowContext();

匿名内部类在开发中的使用,一般是方法参数为接口的情况

interface D{
    void ShowContext();
}
class B{
    //参数为接口对象
    public void show(D d) {
        d.ShowContext();
    }
}

public class niming {
    public static void main(String[]args) {
        B b=new B();
        //调用时使用匿名类创建匿名对象
        b.show(new D(){
            @Override
            public void ShowContext() {
                System.out.println("hello");
            }
        });
    }
}
原文地址:https://www.cnblogs.com/de-ming/p/12855616.html