You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在类E中实现存储父类A子类B、C、D对象的ArrayList?

解决方案:创建管理A子类对象的容器类E

首先明确:E不需要继承A。继承是"is-a"(是一种)的关系,而E的角色是容器,用来管理B、C、D这些A的子类对象,属于"has-a"(包含)的关系,用组合(包含ArrayList成员)更合理。

步骤1:定义父类A及其子类

先写出基础的类结构:

// 父类A
class A {
    // 可添加父类的属性和方法
}

// 子类B
class B extends A {
    // B的特有属性或方法
}

// 子类C
class C extends A {
    // C的特有属性或方法
}

// 子类D
class D extends A {
    // D的特有属性或方法
}

步骤2:实现容器类E

在E中定义一个ArrayList<A>类型的成员,因为B、C、D都是A的子类,它们的对象可以向上转型为A,直接存入这个列表:

import java.util.ArrayList;

class E {
    // 存储A子类对象的列表
    private ArrayList<A> items = new ArrayList<>();

    // 添加对象的方法,参数为A类型,接受所有A的子类对象
    public void addItem(A item) {
        items.add(item);
    }

    // 可选:获取整个列表的方法
    public ArrayList<A> getItems() {
        return items;
    }

    // 可选:遍历并处理所有对象的方法
    public void processItems() {
        for (A item : items) {
            System.out.println("处理对象:" + item.getClass().getSimpleName());
        }
    }
}

步骤3:使用类E

直接创建E的实例,然后添加B、C、D的对象即可:

public class Main {
    public static void main(String[] args) {
        E container = new E();
        
        // 直接添加不同子类的对象
        container.addItem(new B());
        container.addItem(new C());
        container.addItem(new D());
        
        // 调用处理方法验证
        container.processItems();
    }
}

进阶:处理子类特有逻辑

如果需要对不同子类执行特定操作,推荐用多态(更符合面向对象设计):

  1. 把A改成抽象类,定义抽象方法:
abstract class A {
    public abstract void doSpecificAction();
}

class B extends A {
    @Override
    public void doSpecificAction() {
        System.out.println("B执行专属操作");
    }
}

class C extends A {
    @Override
    public void doSpecificAction() {
        System.out.println("C执行专属操作");
    }
}

class D extends A {
    @Override
    public void doSpecificAction() {
        System.out.println("D执行专属操作");
    }
}
  1. 修改E的processItems方法:
public void processItems() {
    for (A item : items) {
        item.doSpecificAction();
    }
}

这样遍历的时候会自动调用对应子类的方法,不需要手动判断类型。


内容的提问来源于stack exchange,提问作者Aled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:32:16