gpt4 book ai didi

Java 继承将公共(public) getter 移至父级

转载 作者:行者123 更新时间:2023-12-02 01:55:58 25 4
gpt4 key购买 nike

我的 child 类(class)使用组合,其中的类(class)也是 child 类(class)。我如何将组合类的 getter 移动到父类,而不是在每个子类中都有类似的 getter。

public class child1 extends Parent {
private CoolObjectTypeAAA coolObject;
//coolObject getter
}

public class child2 extends Parent {
private CoolObjectTypeBBB coolObject;
//coolObject getter
}

public class CoolObjectTypeAAA extends CoolObject {
}

public class CoolObjectTypeBBB extends CoolObject {
}

public abstract class Parent {
//would like to have a single CoolObject getter here in parent that returns the appropriate cool object of each child.
}

这可能吗,还是我需要在每个子类中都有类似的 getter?

最佳答案

这个怎么样:

abstract class Parent<T extends CoolObject> {
protected T mCoolObject;
public Parent(T coolObject) {
mCoolObject = coolObject;
}

public T getCoolObject() {
return mCoolObject;
}
}

class Child1 extends Parent<CoolObjectTypeAAA> {
public Child1(CoolObjectTypeAAA coolObject) {
super(coolObject);
}
public void demoType() {
// This type checks as the return type of getCoolObject() has been refined to CoolObjectTypeAAA
CoolObjectTypeAAA co = this.getCoolObject();
}
}

class Child2 extends Parent<CoolObjectTypeBBB> {
public Child2(CoolObjectTypeBBB coolObject) {
super(coolObject);
}
public void demoType() {
// This type checks as the return type of getCoolObject() has been refined to CoolObjectTypeBBB
CoolObjectTypeBBB co = this.getCoolObject();
}
}

abstract class CoolObject { }

class CoolObjectTypeAAA extends CoolObject { }

class CoolObjectTypeBBB extends CoolObject { }

本质上,您让子类指定它使用的 CoolObject 的任何特定子类型,以便它可以细化 getter 的返回类型,但您可以在父类(super class)中实现 getter。

关于Java 继承将公共(public) getter 移至父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280356/

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