目录
在Java中,方法覆盖(Overriding) 和 方法重载(Overloading) 是两种常见的多态实现方式,它们各自有不同的作用和使用场景。理解这两者之间的区别,能够帮助开发者更好地设计和优化程序结构,同时还涉及到Java接口的一个重要特性——接口是否能够包含方法实现。今天,我们就从这三个方面进行详细讲解。
一、方法覆盖(Overriding)
方法覆盖是指在子类中重新定义父类已经定义过的方法。方法覆盖的目的是改变父类的方法行为,使得子类可以根据自身的需求实现不同的功能。Java中的方法覆盖有几个基本规则:
- 子类方法的名称、返回类型、参数列表必须与父类被覆盖的方法一致。
- 子类方法的访问修饰符不能比父类方法更严格,通常来说,可以选择相同或者更宽松的权限。
- 方法的返回类型要符合协变返回类型的规则,即子类方法的返回类型可以是父类返回类型的子类。
示例代码:
class Animal {
public void sound() {
System.out.println("动物发出声音");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("狗叫");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound(); // 输出:动物发出声音

1319

被折叠的 条评论
为什么被折叠?



