匿名内部类的使用

首先应该提出的是,匿名内部

匿名内部类何时使用较为合适?

       ·只用到类的一个实例。

  ·类在定义后马上用到。

  ·类非常小(SUN推荐是在4行代码以下)

  ·给类命名并不会导致你的代码更容易被理解。

匿名内部类的构建格式:

new 父类构造器(参数列表)|实现接口()  
    {  
     //匿名内部类的类体部分  
    }

应用举例:

public abstract class Bird {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    public abstract int fly();
}

public class Test {
    
    public void test(Bird bird){
        System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米");
    }
    
    public static void main(String[] args) {
        Test test = new Test();
        test.test(new Bird() {
            
            public int fly() {
                return 10000;
            }
            
            public String getName() {
                return "大雁";
            }
        });
    }
}
------------------
Output:
大雁能够飞 10000米

本例子构造了一个抽象类“鸟类”,一个测试用的类“测试类”,假如我们在此使用匿名内部类的技巧,也就是以下代码

test.test(new Bird() {
            
            public int fly() {
                return 10000;
            }
            
            public String getName() {
                return "大雁";
            }
        });

我们在给test方法传参时,new了一个新的类,暂时称为匿名内部类A,A是继承于鸟类的一个类,因为匿名内部类的定义,所以A除了可以自己定义特有的成员函数以外,还必须将父类,也就是鸟类的抽象成员函数fly()实现。

匿名内部类的使用限制

      ·匿名内部类不能有构造方法。

  ·匿名内部类不能定义任何静态成员、方法和类。

  ·只能创建匿名内部类的一个实例。

       ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

  ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效

猜你喜欢

转载自blog.csdn.net/gghs_up/article/details/80789045