我希望能够执行以下操作,请记住 A 类和 B 类位于两个不同的包中,我不能修改 A 类或将 B 类放在 A 类的同一个包中:
class A{
A(){
//stuff
}
}
class B extends A{
public B(){
//stuff
}
}
此代码给出“找不到 simbol:构造函数 A”。有什么办法吗?
我希望能够执行以下操作,请记住 A 类和 B 类位于两个不同的包中,我不能修改 A 类或将 B 类放在 A 类的同一个包中:
class A{
A(){
//stuff
}
}
class B extends A{
public B(){
//stuff
}
}
此代码给出“找不到 simbol:构造函数 A”。有什么办法吗?
如果您无法更改A类,您可以尝试在A所在的包中添加一个新类并将其扩展为使用A,然后使用B从新类扩展它。
除非您将Class A 设为 public,否则NO是ANSWER,因为您的Class A具有仅局限于包级别的默认范围。使其可以在您的包之外访问,将其标记为公开
类在其构造函数中所做的第一件事是调用其超类的构造函数。由于 A 类没有公共的无参数构造函数,因此您无法按照您尝试的方式扩展 B。
如果有一个带参数的公共构造函数,你可以扩展它,只要你调用 super(arg1, ...); 作为类的构造函数中的第一个调用:
public B()
{
super(arg1, arg2, argN);
// stuff
}
你说你不能把类B
放在同一个包中A
。但是你能在那个包里有一些帮助类 H 吗?我是说:
package a;
class A { ... }
package a;
public class Helper extends A {
public Helper() { }
}
package b;
import a.Helper;
class B extends Helper {
B() { }
}
我猜你正在处理密封包装,所以这是不可能的,但如果不是这样,那么这个解决方案应该可以工作。