Java类收集所有子属性

我想创建一个类,可以有它的子类属性。例如,我想创建一个类,可以有它的子类属性。

public class Parent {
    private String a;
    private String b;
}
public class ChildA extends Parent {
    private String c;
    private String d;
}
public class ChildB extends Parent {
    private String e;
    private String f;
}

如何才能 Parent 属于 ChildAChildA 是通过和 ChildBChildB 是通过?可以通过把它作为一个普通的 Object然而,如何用更多的OOP方式来做呢?

解决方案:

我是这样做的……假设我正确理解了你的要求。

public class Parent {
    private String a;
    private String b;

    public List<String> collect() {
        return Arrays.asList(a, b);
    }
}

public class ChildA extends Parent {
    private String c;
    private String d;

    @Override
    public List<String> collect() {
        List<String> res = new ArrayList<>();
        res.addAll(super.collect());
        res.add(c);
        res.add(d);
        return res;
    }
}

父类有一个直接的实现来实现 collect().

子类覆盖了 collect() 的实现,并在方法中调用父类的 collect().

这种方法给出了相当重复的代码。


另一种方法是使用反射找到所有的字段,然后打开 private 访问,并检索和添加它们的所有值到一个新的系统中。List 对象。 这样做的代码是非平凡的,但它只需要实现一次。

反射的方法是打破类型抽象来访问另一个类中的私有字段。 这有点反OO……取决于你的观点。

给TA打赏
共{{data.count}}人
人已打赏
未分类

用If语句更新表的PLSQL代码

2022-9-14 4:57:24

未分类

pyqt5 python从另一个类中调用函数[重复]。

2022-9-14 5:08:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索