gpt4 book ai didi

java - 在 Java 的子类中使用父变量的扩展版本

转载 作者:行者123 更新时间:2023-12-02 02:43:34 26 4
gpt4 key购买 nike

我有一个扩展类,需要使用父类中变量的扩展版本。到目前为止,我一直这样使用它:

public class ParentClass
{
protected ParentVariable variable;

public ParentClass(){
this.variable = new ParentVariable();
}
....
}

public class ChildClass extends ParentClass
{
public ChildClass(){
super();
this.variable = new ChildVariable();
//Where ChildVariable Extends ParentVariable
....
}
}

只要每次使用变量时我都会将其转换为 ChildVarible,这或多或少就可以工作,但这很丑陋并且会引发一些问题。有更好的方法来执行此操作吗?谢谢。

最佳答案

如果可以使您的父类(super class)抽象,您可以通过使用泛型来解决这个问题:

public abstract class ParentClass<T extends ParentVariable>
{
private T variable;

protected T getVariable(){
return variable
}

protected void setVariable(T variable){
this.variable = variable;
}
....
}

public class ChildClass extends ParentClass<ChildVariable>
{
public ChildClass() {
setVariable(new ChildVariable());
//Where ChildVariable Extends ParentVariable
ChildVariable foo = getVariable() // no cast nessecary
}
}

请注意,我已将您的字段设为私有(private)。您应该始终通过 getter 和 setter 方法访问字段,即使在子类中也是如此。

如果这是不可能的(即使可能),则表明您的设计存在缺陷。可能需要重构所有类才能实现干净的架构。不幸的是,这取决于所有四个类的整体实现,以及可能使用这些类的整个上下文。对于 stackexchange 来说,这个答案太宽泛了。

关于java - 在 Java 的子类中使用父变量的扩展版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029090/

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