匿名内部类

匿名内部类:
new 接口名/抽象类名(){
//重写接口或者抽象类中的方法
}
就意味着JVM在运行过程中做了几件事:
1、JVM内部自己创建一个类
2、这个类实现一个接口或者继承了一个抽象类
3、将这个类的对象创建出来

interface Inter1{  //定义一个接口
    void fun1();
}

class InterImpl implements Inter1{  //一个具体实现该接口的类
    public void fun1(){
        System.out.println("今天上课很开心");
    }
}
class Demo{
    public void fun2(Inter1 inter1){  //将接口名作为一个参数类型,传入的值必须是一个具体实现该接口的类
        inter1.fun1();     //该对象调用具体实现该接口的子类重写的fun1方法
    }
}

public class NiMingClassDemo1 {
    public static void main(String[] args) {
        Demo demo = new Demo();   //创建一个Demo对象
        demo.fun2(new InterImpl());   // 基本用法(这么做很麻烦):用对象去调用里面的方法,方法里面传入具体实现该接口的子类的对象

之前我们的写法是这样的,但是这样很麻烦,当我实现这个接口里面的方法使用不同,那我需要自己再去写一个类去实现这个方法并进行重写
这时候我们就可以使用内部类,如下:

demo.fun2(new Inter1() {  //高级用法:使用匿名内部类,调用该方法时括号里面传入该接口名的对象+回车,就相当于创建了一个具体实现该子类的对象
            @Override
            public void fun1() {
                System.out.println("今天上课不开心");
            }
        });
posted @ 2024-09-27 20:18  你的镁偷走了我的锌  阅读(20)  评论(0)    收藏  举报