【发布时间】:2025-12-06 15:55:01
【问题描述】:
假设我的 A 类和 B 类继承自 A。我想重写方法 public void print(),它应该可以正常工作。
但是是否有可能在B中重载public void print(),但是这次没有在A类中声明方法而带一个参数?
abstract class A {
String name;
public void print();
}
class B extends A {
@Override
public void print() {
System.out.println("Hello"); // Works just fine
}
public void print(String s) {
System.out.println("Hello" + s); // Doesn't work when calling it, as it must be declared in A
}
}
【问题讨论】:
-
没有。这称为重载,与继承无关。无论如何,用需要参数的方法覆盖无参数方法,它会如何工作?
-
为什么要覆盖super中不存在的方法?只需简单地声明它。你要做的是命名重载,同名,不同参数。
-
@Gendarme 你是对的,对不起。重载就是我的意思。但是是否可以重载方法 print() 而不在 A 中声明它 print(string s)?
-
有可能重载 print(),你已经做到了。你把它称为
B bb = new B();->bb.print("text"); -
要做到这一点,你需要做
((B)obj).print("there");。因为A obj = new B()意味着您的对象类型将是A和B的实例,您需要告诉编译器尝试将其转换为B并使用强制转换(B)obj。 P.S.:我不太好解释这个。如果有人认为我错了,请纠正我。
标签: java class inheritance overriding