匿名内部类
概述
匿名内部类本质上是一个特殊的局部内部类(定义在方法内部)
前提
需要存在一个接口或类
 理解:匿名内部类是将(继承\实现)(方法重写)(创建对象)三个步骤,放在了一步进行
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();
}










