在 Java 中,@Override 用来重写(Override)父类或接口中的方法。它的作用是:
class Animal {
public void speak() {
System.out.println("动物叫");
}
}
class Dog extends Animal {
@Override
public void speak() {
System.out.println("汪汪汪");
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.speak(); // 输出:汪汪汪
}
}
✅ 这里 @Override 表示:Dog 的 speak() 是重写 Animal 的
✅ 方法名 必须一样
✅ 参数列表 必须一样
✅ 返回类型:
❌ 不能缩小访问权限
// 错误示例
class Animal {
public void speak() {}
}
class Dog extends Animal {
@Override
protected void speak() {} // ❌ 不能比 public 小
}
❌ 不能抛出比父类更多的受检异常
| 对比 | 重写 Override | 重载 Overload |
|---|---|---|
| 位置 | 子类 | 同一个类 |
| 方法名 | 相同 | 相同 |
| 参数 | 必须相同 | 必须不同 |
@Override |
✅ 用 | ❌ 不能用 |
interface Run {
void run();
}
class Cat implements Run {
@Override
public void run() {
System.out.println("猫跑");
}
}
❌ 写错方法名(编译器直接报错)
@Override
public void spek() { } // 编译错误
❌ 参数不一致(变成重载,不是重写)
@Override
public void speak(String s) { } // 编译错误
@Override就是“我故意改写了父类/接口的方法,请编译器帮我检查”
如果你愿意,我也可以:
你想看哪种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。