在 Java 里,**“超类(父类 / superclass)能不能被重写”**这个问题,要先分清你在说哪种“重写”。
✅ 子类可以重写(override)超类中定义的方法
❌ 超类本身不能被“重写”(类不能被重写,只能被继承或实现)
更准确地说:
重写指的是:子类对从超类继承来的方法,重新实现
class Animal {
void sound() {
System.out.println("动物叫");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("汪汪汪");
}
}
这里:
Animal 是超类Dog 是子类sound() 被重写了✅ 这是“超类的方法被重写”,不是“超类被重写”
Java 中没有“类重写”这个概念。
你只能:
class BetterAnimal extends Animal {
void run() {
System.out.println("跑");
}
}
interface Flyable {
void fly();
}
class Bird implements Flyable {
public void fly() {
System.out.println("飞");
}
}
class AnimalWrapper {
private Animal animal;
AnimalWrapper(Animal animal) {
this.animal = animal;
}
void sound() {
animal.sound();
System.out.println("(增强逻辑)");
}
}
即使你是子类,也不能重写:
| 情况 | 原因 |
|---|---|
private 方法 |
对子类不可见 |
final 方法 |
禁止重写 |
static 方法 |
属于类,不属于对象 |
| 构造方法 | 不能被继承,也不能被重写 |
示例:
class A {
final void f() {}
static void g() {}
}
class B extends A {
// ❌ 不能重写 f()
// ❌ g() 不是重写,只是隐藏
}
Java 中:超类不能被“重写”,但超类的方法可以被子类重写;类只能被继承或实现。
如果你说的是:
如果你愿意,可以告诉我你具体想“重写”的是什么(方法?类?第三方库?),我可以直接给你最合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。