匿名内部类

174 阅读1分钟

「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

匿名内部类: 本质上是一个没有名字的局部内部类,定义在方法中、代码块中、等。 作用: 方便创建子类对象,最终目的为了简化代码编写。

特点总结: 匿名内部类是一个没有名字的内部类。 匿名内部类写出来就会产生一个匿名内部类的对象。 匿名内部类的对象类型相当于是当前new的那个的类型的子类类型。

截屏2021-11-05 上午11.43.20.png

截屏2021-11-05 上午11.45.55.png

匿名内部在开发中使用形式: 匿名内部类可以作为方法的时机参数进行传输。

截屏2021-11-05 上午11.47.15.png


public class Test2 {
    public static void main(String[] args) {
        Swimming s = new Swimming() {
            @Override
            public void swim() {
                System.out.println("游泳了");
            }
        };
        go(s);

        Swimming s1 = new Swimming() {
            @Override
            public void swim() {
                System.out.println("老师游泳了");
            }
        };
        go(s1);

        Swimming s2 = new Swimming() {
            @Override
            public void swim() {
                System.out.println("校长游泳了");
            }
        };
        go(s2);
        Swimming s3 = new Swimming() {
            @Override
            public void swim() {
                System.out.println("运动员游泳了");
            }
        };
        go(s3);
        
        go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("学生直接游泳了。");
            }
        });
                go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("老师直接游泳了。");
            }
        });
                go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("校长直接游泳了。");
            }
        });
                go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("运动员直接游泳了。");
            }
        });
        
    }

    public static void go(Swimming s) {
        System.out.println("开始...");
        s.swim();
        System.out.println("结束...");
    }
    
    
}

interface Swimming{
    void swim();
}


匿名内部类在开发中的真是使用场景演示: 给按钮绑定点击事件

截屏2021-11-05 上午11.57.22.png

使用总结: 开发中不是我们主动去定义匿名内部类,而是别人需要我们写或者我们可以写的时候才会使用。 匿名内部类的代码可以实现代码进一步的简化。