🔥🔥🔥匿名内部类是内部类的一种,它是我们开发中经常用到的一种内部类。
内部类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
一、匿名内部类的格式
有new关键字就代表创建对象,实际上是创建了一个没有名字的类的对象。
注意语法:最后的 ; 一定不要忘了。
new 类名或接口名() { //重写方法 };
二、理解匿名内部类
{ }里可以看成一个类,这个类没有名字。
如果new 后面是一个类名,{ }里面的类就是该类的一个子类
如果new 后面是接口名,{ }里的类就是该接口的实现类
假如有一个Animal抽象类,一个Swim接口
三、匿名内部类的应用场景
当一个方法的参数是类或接口时
以类为例,调用该方法要传入该类或该类的子类
如果该类我们只使用一次,那么就可以用匿名内部类简化
举个例子你就明白了
有一个method方法,参数需要传入Animal类 ,我们该如何调用method方法呢?
//method方法 public static void method(Animal a){ System.out.println("method被调用"); } //Animal类 public abstract class Animal { public abstract void eat(); }
①以前的调用方式
//定义一个狗类 public class Dog extends Animal{ @Override public void eat() { ; } }
②利用匿名内部类
如果狗类非常大,那将是件非常麻烦的事情,匿名内部类极大的简化了代码
四、匿名内部类的位置
可以写在成员位置,也可以写在局部位置
1.写在成员位置的匿名内部类(方法外类里)
public class Test { new 类名或接口名() { //重写方法 }; public static void main(String[] args) { } }
2.写在局部位置的匿名内部类(方法里面)
public class Test { public static void main(String[] args) { new 类名或方法名() { //重写方法 }; } }