跳到主要内容

Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

参考答案:

是的,匿名内部类既可以继承其他类,也可以实现接口

在Java中,匿名内部类是一种没有名称的局部内部类,通常用于实现一个接口或继承一个类,并立即创建这个类的实例。它可以用于简化代码,避免创建一个只有一次使用的完整类定义。

  1. 继承其他类:如果匿名内部类需要继承一个已存在的类,可以在声明时通过extends关键字指定父类。例如:
class Animal {
    void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal() {
            @Override
            void makeSound() {
                System.out.println("The anonymous animal makes a special sound");
            }
        };
        myAnimal.makeSound();
    }
}

在上面的例子中,匿名内部类继承了Animal类,并重写了makeSound方法。 2. 实现接口:如果匿名内部类需要实现一个或多个接口,可以在声明时通过implements关键字指定接口。例如:

interface Greeting {
    void sayHello();
}

public class Main {
    public static void main(String[] args) {
        Greeting greeter = new Greeting() {
            @Override
            public void sayHello() {
                System.out.println("Hello from anonymous class!");
            }
        };
        greeter.sayHello();
    }
}

在这个例子中,匿名内部类实现了Greeting接口,并实现了sayHello方法。

需要注意的是,一个匿名内部类只能继承一个类或实现一个接口集合(多个接口),这符合Java的单一继承和多接口实现的原则。同时,匿名内部类通常用于一次性使用的简单场景,如果逻辑复杂或需要重复使用,建议定义具名的内部类或外部类。