我希望能够做到以下几点,记住A和B类在两个不同的包中,我不能修改A类或将B类放在A类的同一个包中: / p>
class A{
A(){
//stuff
}
}
class B extends A{
public B(){
//stuff
}
}
这段代码给出了#34;找不到simbol:构造函数A"。有没有办法解决这个问题?
答案 0 :(得分:3)
如果您无法更改A类,您可以尝试将新类添加到A所在的包中并将其扩展为使用A,然后使用B将其从新类扩展。
答案 1 :(得分:2)
除非您将 A级公开,否是答案,因为 A级有< strong>默认范围仅限于包级别。使其在您的软件包之外访问将其标记为公开
答案 2 :(得分:2)
类在构造函数中做的第一件事是调用其超类的构造函数。由于A类没有公共的无参数构造函数,因此无法按照您尝试的方式扩展B.
如果有一个带有参数的公共构造函数,只要你调用super(arg1,...),就可以扩展它。作为类的构造函数中的第一个调用:
public B()
{
super(arg1, arg2, argN);
// stuff
}
答案 3 :(得分:0)
您说您不能将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() { }
}
我猜你正在处理密封包,所以这是不可能的,但如果不是这样,那么这个解决方案应该可行。