0
点赞
收藏
分享

微信扫一扫

JAVA匿名内部类

李雨喵 2022-01-17 阅读 62

匿名内部类

概述

匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)

前提

需要存在一个接口或类
理解:匿名内部类是将(继承\实现)(方法重写)(创建对象)三个步骤,放在了一步进行

public class Test5Innerclass {
    /*
        1.创建实现类,通过implements关键字去实现接口
        2.重写方法
        3.创建实现类对象
        4.调用重写后的方法。

        匿名内部类:
               前提:需要存在一个类\接口
               格式:
                    new 类名 \ 接口名 () {
                        重写方法
                    }
    */
    public static void main(String[] args) {
        InterImpl ii = new InterImpl();
        ii.show();

        // 匿名内部类的理解:将继承\实现,方法重写,创建对象,放在了一步进行
        // 解释:实现了Inter接口的,一个实现类对象
        new Inter(){

            @Override
            public void show() {
                System.out.println("我是匿名内部类中的show方法");
            }
        }.show();

        // 接口中存在多个方法
        Inter2 it = new Inter2() {
            @Override
            public void show1() {
                System.out.println("我是show1");
            }

            @Override
            public void show2() {
                System.out.println("我是show2");
            }
        };
        it.show1();
        it.show2();
    }
}

interface Inter{
    void show();
}

interface Inter2{
    void show1();
    void show2();
}

class InterImpl implements Inter{

    @Override
    public void show() {
        System.out.println("InterImpl 重写的show方法");
    }
}

匿名内部类在开发中的使用

当方法的形式参数是接口或者抽象类时
可以将匿名内部类作为实际参数进行传播

public class Test6Swimming {
    public static void main(String[] args) {

        goSwimming(new Swimming() {
            @Override
            public void swim() {
                System.out.println("游泳去吗");
            }
        });
    }
    /*使用接口的方法*/
    public static void goSwimming(Swimming swimming) {
        /*
        Swimming swimming = new Swimming() {
            @Override
            public void swim() {
                System.out.println("游泳去吗");
            }
        };
        */
        swimming.swim();
    }
}

/*
    游泳接口
*/
interface Swimming{
    void swim();
}

举报

相关推荐

0 条评论