java匿名内部类

匿名内部类是内部类的一种,它是我们开发中经常用到的一种内部类。

内部类

  •  成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类

一、匿名内部类的格式

有new关键字就代表创建对象,实际上是创建了一个没有名字的类的对象。

注意语法:最后的 ; 一定不要忘了。

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

二、理解匿名内部类

{ }里可以看成一个类,这个类没有名字。

如果new 后面是一个类名,{ }里面的类就是该类的一个子类

如果new 后面是接口名,{ }里的类就是该接口的实现类

假如有一个Animal抽象类,一个Swim接口

java匿名内部类_第1张图片

三、匿名内部类的应用场景

当一个方法的参数是类或接口时

以类为例,调用该方法要传入该类或该类的子类

如果该类我们只使用一次,那么就可以用匿名内部类简化

举个例子你就明白了

有一个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() {
        ;
    }
}

 ②利用匿名内部类

java匿名内部类_第2张图片

 如果狗类非常大,那将是件非常麻烦的事情,匿名内部类极大的简化了代码

四、匿名内部类的位置

   可以写在成员位置,也可以写在局部位置

    1.写在成员位置的匿名内部类(方法外类里)

public class Test {
    new 类名或接口名() {
        //重写方法
    };
    public static void main(String[] args) {

    }
}

2.写在局部位置的匿名内部类(方法里面)

public class Test {
    public static void main(String[] args) {
        new 类名或方法名() {
            //重写方法
        };
    }
}

你可能感兴趣的:(Java开发基础,java,开发语言)