我需要在内部类中调用继承的类构造函数。假设我有继承Baseclass的Outerclass,而我在Outerclass内部有一个内部类。从这个内部类的构造函数中,我需要调用BaseClass构造函数?
public class BaseClass {
public BaseClass (WebDriver driver)
{
this.driver =driver;
PageFactory.initElements(new AjaxElementLocatorFactory(driver, maxTimeOutForElement), this);
}
}
public class OuterClass extends BaseClass {
OuterClass (WebDriver driver)
{
super(driver)
}
//Does something
public class InnerClass
{
InnerClass (WebDriver driver)
{
//is there a way to call Baseclass constructor super(driver)
//I don't want to call directly new AuthorLoginPage(driver) breaking
//my constructor chain.
}
}
}
最佳答案
答案为:
//is there a way to call Baseclass constructor super(driver)
没有。注意:
InnerClass
不是静态的。这意味着:InnerClass
的对象不能“独立存在”。创建InnerClass
实例的唯一方法是首先创建OuterClass
实例。在可以创建
InnerClass
对象(正在执行其构造函数代码)的时间点上,调用超类的构造函数毫无意义。因为InnerClass
没有超类(除了Object)。调用封闭的OuterClass
的构造函数没有任何意义-因为该OuterClass
对象已经存在!或者,通过代码说明:
OuterClass outer = new OuterClass(someDriver);
OuterClass.InnerClass inner = outer.new InnerClass(someDriver);
导致:退后一步,并研究您的模型。乍一看,这没有多大意义。
为了解决OP的注释:
InnerClass
扩展了Object!它与BaseClass
没有直接关系。除了任何InnerClass
对象都属于OuterClass
对象这一事实,而且该对象扩展了BaseClass
!