gpt4 book ai didi

Java在子类的复制构造函数中使用父类(super class)的 protected 方法

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

我有一个 protected 方法(我不希望在父类(super class)或其子类之外看到此方法)。我想在复制构造函数中使用它,但我不能。代码:

public class Superclass {
protected HashMap<Object, Object> getData() {
return new HashMap<>();
}
}

public class Subclass extends Superclass {
public Subclass(Superclass abstractClass) {
init(abstractClass);
}

private void init(Superclass abstractClass) {
//ERROR!!! getData has protected access in Superclass
for (Map.Entry<Object, Object> entry : abstractClass.getData().entrySet()) {
//do something
}
}
}

如果我仍然想从父类(super class)对象创建子类对象而不公开 getData() 方法,如何克服这个问题?

编辑类位于不同的包中!

最佳答案

您在创建实例之前尝试访问方法。该实例尚未完全初始化。

调用从其自己的构造函数构造的对象的方法可能会导致意外行为,因为在构造函数完成之前,对象不会一致地初始化。

关于Java在子类的复制构造函数中使用父类(super class)的 protected 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21930240/

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