在子类中重载被覆盖的方法,我是在重载父方法还是子类方法?
我大致了解什么是重载和覆盖。
重载 - 相同的方法不同的参数,并且可能在同一个类中返回类型。
覆盖 - 在子类中与父类中的方法签名相同,但实现不同。
class A {
public void a() {
System.out.println("A.a");
}
}
class B extends A {
public void a() {
super.a();
System.out.println("B.a");
}
public void a(int x) {
}
}
Run Code Online (Sandbox Code Playgroud)
方法 Ba(int x) 是重载 Aa 还是 Ba?
小智 3
您重写了继承的内容,因此 Ba() 重写了 Aa()。覆盖意味着重新定义。
重载是指您的类对同一方法名称有多个定义(每个定义具有不同的参数类型)。在 B 中,名称 a 是重载的。有 Ba() 和 Ba(int x)。
一些定义可能会被继承。因此,如果删除 Ba(),类 B 仍然会有一个方法 a(),因为它是从 A 继承的。并且方法名称 a 仍然会在 B 中重载。