Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
参考答案:
是的,匿名内部类既可以继承其他类,也可以实现接口。
在Java中,匿名内部类是一种没有名称的局部内部类,通常用于实现一个接口或继承一个类,并立即创建这个类的实例。它可以用于简化代码,避免创建一个只有一次使用的完整类定义。
- 继承其他类:如果匿名内部类需要继承一个已存在的类,可以在声明时通过
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的单一继承和多接口实现的原则。同时,匿名内部类通常用于一次性使用的简单场景,如果逻辑复杂或需要重复使用,建议定义具名的内部类或外部类。