概述:
今天给大家介绍一下匿名内部类哦,它允许你在一个方法当中直接创建类的实例🤔,并定义该实例的方法。
让我们不用每次都新建一个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();
}
匿名内部类的注意事项
再使用匿名内部类的过程中,需要注意如下几点:
- 使用匿名内部类时,必须是实现一个接口或者继承一个类。
- 匿名内部类不能是抽象的,它必须要重写抽象类或者接口的所有抽象方法。
- 匿名内部类没有构造器。
- 匿名内部类不能存在静态成员(方法、变量)。
- 匿名内部类相当于局部内部类,所以局部内部类的所有限制同样对匿名内部类有效。
欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生👊👊👊