Java 匿名内部类

发布于:2024-10-12 ⋅ 阅读:(16) ⋅ 点赞:(0)

概述:

今天给大家介绍一下匿名内部类哦,它允许你在一个方法当中直接创建类的实例🤔,并定义该实例的方法。

让我们不用每次都新建一个Java文件然后定义一个类,再来创建类的对象

匿名内部类

匿名内部类本质上就是隐藏了名字的内部类,通常用于简化代码并实现接口或继承类

格式:

new 类名或者接口名(){
    重写方法;
};
整体的格式里面包含了三部分:
  • 继承 \ 实现

  • 方法重写

  • 创建对象

格式的细节:

包含了继承或实现,方法重写,创建对象。

整体就是一个类的子类对象或者接口的实现类对象,一般会用接口或者抽象类的名称来代表匿名内部类的名字。

使用场景:

当方法的参数是接口或者类时,以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码。

代码案例:

public class Test {
    public static void main(String[] args) {
        //方式一:调用swim方法
        //编写匿名内部类的代码
        Swim swim = new Swim() {	//这里的花括号就表示类的子类或者接口的实现类
            @Override
            public void swim() {
                System.out.println("重写了游泳的方法");
            }
        };
        
        //方式二:调用swim()方法
        new Swim() {
            @Override
            public void swim() {
                System.out.println("重写了游泳的方法,并直接调用");
            }
        }.swim();
        
        //方式三:调用swim()方法
        show(new Swim(){
            @Override
            public void swim(){
                System.out.println("重写了游泳的方法,并在方法中调用");
            }
        });
    }
    
    //定义了一个方法,用来显示不同的游泳方式
    public static void show(Swim s){
        s.swim();
    }
}
interface Swim {
    public abstract void swim();
}

匿名内部类的注意事项

再使用匿名内部类的过程中,需要注意如下几点:

  1. 使用匿名内部类时,必须是实现一个接口或者继承一个类。
  2. 匿名内部类不能是抽象的,它必须要重写抽象类或者接口的所有抽象方法。
  3. 匿名内部类没有构造器。
  4. 匿名内部类不能存在静态成员(方法、变量)。
  5. 匿名内部类相当于局部内部类,所以局部内部类的所有限制同样对匿名内部类有效。

欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生👊👊👊