首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在父类的arraylist中区分每个子类

在父类的ArrayList中区分每个子类,可以通过以下几种方式实现:

  1. 使用多态:多态是面向对象编程的重要特性之一,它允许将子类的对象赋值给父类的引用变量。在父类的ArrayList中存储不同子类的对象,然后通过类型转换将其还原为子类对象,从而区分每个子类。例如:
代码语言:java
复制
ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj instanceof ChildClass1) {
        ChildClass1 child1 = (ChildClass1) obj;
        // 处理ChildClass1对象
    } else if (obj instanceof ChildClass2) {
        ChildClass2 child2 = (ChildClass2) obj;
        // 处理ChildClass2对象
    }
}
  1. 使用自定义标识属性:在父类中定义一个标识属性,用于区分每个子类。子类可以根据需要重写该属性。然后在父类的ArrayList中存储不同子类的对象,并通过标识属性来区分每个子类。例如:
代码语言:java
复制
class ParentClass {
    protected String type;

    public String getType() {
        return type;
    }
}

class ChildClass1 extends ParentClass {
    public ChildClass1() {
        type = "ChildClass1";
    }
}

class ChildClass2 extends ParentClass {
    public ChildClass2() {
        type = "ChildClass2";
    }
}

ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj.getType().equals("ChildClass1")) {
        // 处理ChildClass1对象
    } else if (obj.getType().equals("ChildClass2")) {
        // 处理ChildClass2对象
    }
}
  1. 使用枚举类型:在父类中定义一个枚举类型,用于表示每个子类。子类可以根据需要重写该枚举类型。然后在父类的ArrayList中存储不同子类的对象,并通过枚举类型来区分每个子类。例如:
代码语言:java
复制
enum ChildType {
    CHILD_CLASS_1,
    CHILD_CLASS_2
}

class ParentClass {
    protected ChildType type;

    public ChildType getType() {
        return type;
    }
}

class ChildClass1 extends ParentClass {
    public ChildClass1() {
        type = ChildType.CHILD_CLASS_1;
    }
}

class ChildClass2 extends ParentClass {
    public ChildClass2() {
        type = ChildType.CHILD_CLASS_2;
    }
}

ArrayList<ParentClass> list = new ArrayList<>();
list.add(new ChildClass1());
list.add(new ChildClass2());

for (ParentClass obj : list) {
    if (obj.getType() == ChildType.CHILD_CLASS_1) {
        // 处理ChildClass1对象
    } else if (obj.getType() == ChildType.CHILD_CLASS_2) {
        // 处理ChildClass2对象
    }
}

以上是几种在父类的ArrayList中区分每个子类的方法,具体选择哪种方式取决于实际需求和设计。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JAVA学习笔记(二)

    设计模式 设计模式有23种,所有面向对象的语言都有这23种设计模式。 单例设计模式 单例:单个实例(对象) 步骤: 1.Test不能让别人创建对象 ---》Test构造方法变成私有的 (Test类不让创建对象了) 2.Test类自已创建自已的对象 (别人拿不了,因为Test不让创建对象,不能通过对象名.属性拿) 3.Test类对外提供一个公共的静态方法,让别人拿这个对象 (静态方法不能调用非静态变量) 4.Test类把这个对象变成静态变量 5.拿对象----》类名.方法名() 6.拿的对象是同一对象,指向的是同一内存地址。 保证对象唯一性思想: 1)不允许其它程序用new来创建对象 2)在该类创建一个本类实例 3)对外提供一个方法,让其它程序可以获取该对象

    01
    领券