如何使用一个 object 访问所有 child 方法?

How to access all child methods using one single object?

我有一个问题: 我们可以使用向下转换从 child class 访问所有方法 考虑以下代码 基数 Class :

public class BaseClass {

    public void method() {
        System.out.println("Base class");
    }
}

第一个孩子:

public class ChildOne extends BaseClass {
    @Override
    public void method() {
        System.out.println("inside ChildOne");
    }
}

二孩:

public class ChildTwo extends BaseClass {

    @Override
    public void method() {
        System.out.println("inside ChildTwo");
    }
}

和客户class

try {
    List l = new ArrayList();
    l.add(new BaseClass());
    l.add(new ChildOne());
    l.add(new ChildTwo());

    for (Object o : l) {
        BaseClass bc = (BaseClass) Class.forName(o.getClass().getName().toString()).newInstance();
        bc.method();
    }
} catch (Exception e) {

}

outPut :

Base class
inside ChildOne
inside ChildTwo

现在的问题是

public abstract class BaseClass {

        public abstract void method(); 
    }

因为我们无法创建接口或抽象 class 的 object。 在上面的代码中,我能够访问所有 classes 中的所有方法。 考虑到我们有一个名为 BaseClass 的接口和方法定义,因为我正在许多 classes 中实现该接口现在的问题是我如何在不创建每个 [=35] 的特定实例的情况下访问所有方法=] 我想在单循环中做到这一点但是继承不允许我们这样做 怎么做?

您需要使用泛型列表 (BaseClass):List<BaseClass> l = new ArrayList<>();

多态性在起作用,循环看起来像:

for (BaseClass o : l) o.method();