"```markdown
extends 和 implements 的区别
在面向对象编程中,extends 和 implements 是 Java 和其他一些编程语言中用于实现继承和接口的关键字。它们在功能和语法上有明显的区别。
继承 (extends)
extends 关键字用于创建一个类的子类。子类继承父类的属性和方法。子类可以重写父类的方法以提供特定的实现。
示例:
class Animal {
void eat() {
System.out.println(\"Animal eats\");
}
}
class Dog extends Animal {
@Override
void eat() {
System.out.println(\"Dog eats\");
}
}
在这个例子中,Dog 类通过 extends 关键字继承了 Animal 类。Dog 类重写了 eat 方法,提供了特定的实现。
特点:
- 单继承:在 Java 中,一个类只能继承一个父类。
- 构造函数:子类构造函数可以调用父类构造函数。
- 访问修饰符:可以继承父类的
public和protected方法和属性,但不能继承private属性和方法。
接口 (implements)
implements 关键字用于实现接口。接口是一种特殊的引用类型,定义了一组抽象方法,类实现这些接口时,需要提供这些方法的具体实现。
示例:
interface Animal {
void eat();
}
class Dog implements Animal {
@Override
public void eat() {
System.out.println(\"Dog eats\");
}
}
在这个例子中,Dog 类通过 implements 关键字实现了 Animal 接口。Dog 类必须实现接口中定义的 eat 方法。
特点:
- 多实现:一个类可以实现多个接口,解决了单继承的局限性。
- 抽象方法:接口中的方法默认是
public和abstract,必须被实现。 - 没有状态:接口不能包含实例变量,只能包含常量(
static final)。
总结
- 使用
extends时,类之间形成了父子关系,子类可以继承父类的属性和方法。 - 使用
implements时,类与接口之间形成实现关系,类需实现接口中定义的所有方法。 extends只能单一继承,而implements可以多重实现,增强了灵活性。
通过理解 extends 和 implements 的区别,可以更好地设计和实现面向对象的程序结构。