Java学习笔记85——匿名内部类

匿名内部类

interface A{ b(); c(); }

class B implements A{ b(){..} c(){..}

}

A a = new B();

A a = new A(){ b(){..} c(){..} };

匿名内部类:

就是内部类的一个简化写法。

存在匿名内部类的前提:

要存在一个类或者是一个接口,类可以是具体的类也可以是抽象类

定义格式:

new 类名或者接口名(){重写方法;}

本质上: 是一个继承了这个类或者实现了这个接口的子类匿名对象

interface Inter{
    public abstract void show();
    public abstract void show2();
}
​
​
class Outer7{
    public void fun(){
        new Inter(){
            @Override
            public void show() {
                System.out.println("这是show方法");
            }
​
            @Override
            public void show2() {
                System.out.println("这是show2方法");
            }
        }.show();
​
        new Inter(){
            @Override
            public void show() {
                System.out.println("这是第二个匿名内部类的show方法");
            }
​
            @Override
            public void show2() {
                System.out.println("这是第二个匿名内部类的show2方法");
            }
        }.show2();
​
        //想一想,如果接口中的方法很多的时候,每次调用一个方法,都需要new一下,要写的内容都重复
        //了。怎么改进?
        System.out.println("====================================");
        //多态的形式,这里叫做接口多态
        Inter i = new Inter(){
            @Override
            public void show() {
                System.out.println("这是第二个匿名内部类的show方法");
            }
​
            @Override
            public void show2() {
                System.out.println("这是第二个匿名内部类的show2方法");
            }
        };
​
        i.show();
        i.show2();
    }
}
​
​
public class InnerClassDemo7 {
    public static void main(String[] args) {
        Outer7 outer7 = new Outer7();
        outer7.fun();
    }
}
posted @ 2021-12-13 22:19  欧朋  阅读(54)  评论(0)    收藏  举报