gpt4 book ai didi

java - 如何在内部类中调用继承类的构造函数

转载 作者:行者123 更新时间:2023-12-01 20:16:30 24 4
gpt4 key购买 nike

我需要在内部类中调用继承类的构造函数。假设我有继承 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对象可以被创建时(它们的构造函数代码被执行)——调用父类(super class)的构造函数是没有意义的。因为 InnerClass 没有父类(super class)(除了 Object)。调用封闭 OuterClass 的构造函数是没有意义的 - 因为该 OuterClass 对象已经存在!

或者,通过代码进行解释:

OuterClass outer = new OuterClass(someDriver);
OuterClass.InnerClass inner = outer.new InnerClass(someDriver);

导致:退一步,看看你的模型。乍一看并没有多大意义。

并解决OP的评论:InnerClass extends对象!它与BaseClass没有直接关系。除此之外,任何 InnerClass 对象都属于 OuterClass 对象,并且该对象扩展了 BaseClass!

关于java - 如何在内部类中调用继承类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45711663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com