gpt4 book ai didi

java - child 没有继承其 parent 的一些属性/行为?

转载 作者:行者123 更新时间:2023-12-02 09:46:39 25 4
gpt4 key购买 nike

我扩展了一个类,并向子级添加了 1 个带有 getter 和 setter 的属性。

现在我在调试器中看到这个新的子类没有获取其父类的一些属性。

含义:当我使用父级时,这些属性会通过,但对于子级,它们是空/0。但是,并非所有属性都为空。

我很好奇 - 通过扩展原始类,所有原始行为不应该在新的子类中继承吗?

一些代码示例:

public class ParentLensRequest extends AbstractLensRequest implements [long list of classes] {
private Map<String, Interval> intervals = new LinkedHashMap<>();

public Set<Interval> getPeriods() {
if (CollectionUtils.isEmpty(this.intervals)) {
this.intervals = new LinkedHashMap<>();
}
return intervals.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toCollection(LinkedHashSet::new));
}
@Override
public void addInterval(Interval interval) {
Objects.requireNonNull(interval, "Interval is required");
this.intervals.put(interval.getName(), interval);
}
@Override
public void updateInterval(String name, LocalDate startDate, LocalDate endDate, Optional<String> nameWithDates,
Optional<String> longName) {
//more code
}
}

child :

@Getter
@Setter
public class ChildLensRequest extends ParentLensRequest {
private ContextObject context;
}

父级上没有构造函数,并且任何 setter 都应该被继承。我错过了什么?

最佳答案

ParentLensRequest 拥有的唯一属性是 intervals,它是私有(private)。尽管 ChildLensRequest 实例确实具有 intervals 字段(因为 ChildLensRequest 的实例是 ParentLensRequest 的实例),但代码在 ChildLensRequest 中看不到它,因为它是私有(private)。 (ParentLensRequest 中的代码可以在子实例上看到它,但看不到代码类中的代码。)

如果您希望子类能够在自己的代码中与intervals交互,请为其提供更广泛的访问级别(例如protected)。

关于java - child 没有继承其 parent 的一些属性/行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598911/

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