Java 中接口的具名实现和匿名实现
在 Java 中,接口的实现方式可以通过具名实现(即通过类名实现)和匿名实现(即匿名内部类实现)。这两种方式各有用途,具体区别如下:
- 具名实现:通过类名来实现接口,可以重用该类。
- 匿名实现:通过匿名类(没有名字的类)来实现接口,通常用于只需要一次性使用的场景。
具名实现接口
// 定义接口 Animal
interface Animal {
void sound();
void move();
}
// 具名类实现接口
class Dog implements Animal {
@Override
public void sound() {
System.out.println("The dog barks");
}
@Override
public void move() {
System.out.println("The dog runs");
}
}
public class Main {
public static void main(String[] args) {
// 创建具名类对象
Animal dog = new Dog();
dog.sound(); // 输出:The dog barks
dog.move(); // 输出:The dog runs
}
}
匿名实现接口
匿名实现是在不创建具体类名的情况下,直接在代码中实现接口。
// 定义接口 Animal
interface Animal {
void sound();
void move();
}
public class Main {
public static void main(String[] args) {
// 使用匿名内部类实现接口
Animal cat = new Animal() {
@Override
public void sound() {
System.out.println("The cat meows");
}
@Override
public void move() {
System.out.println("The cat jumps");
}
};
// 调用匿名类的方法
cat.sound(); // 输出:The cat meows
cat.move(); // 输出:The cat jumps
}
}
匿名与具名实现的比较
-
具名实现:
- 可重用:可以创建多个对象使用相同的类。
- 代码更易维护:类的实现与接口分离,清晰明确。
-
匿名实现:
- 一次性使用:适合临时创建对象,不需要重复使用。
- 代码简洁:避免了为简单的实现定义多个类。
示例总结
- 具名类实现:
Dog
类具名实现了Animal
接口,可以多次创建Dog
对象。 - 匿名内部类实现:在
Main
方法中,直接实现了Animal
接口,不需要创建一个具名类。