我有一个疑问: 我们可以使用向下转换来访问子类中的所有方法 考虑以下代码 基类:
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");
}
}
child 二:
public class ChildTwo extends BaseClass {
@Override
public void method() {
System.out.println("inside ChildTwo");
}
}
和客户端类
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();
}
因为我们无法创建接口(interface)或抽象类的对象。
在上面的代码中,我可以访问所有类的所有方法。
考虑我们有一个名为 BaseClass
的接口(interface),它带有方法定义,就像我一样,我正在许多类中实现该接口(interface),现在的问题是如何在不创建每个类的特定实例的情况下访问所有方法
我想在单循环中做到这一点但继承不允许我们
如何做到这一点?
最佳答案
您需要使用具有泛型类型的列表( BaseClass
): List<BaseClass> l = new ArrayList<>();
多态性正在发挥作用,循环将如下所示:
for (BaseClass o : l) o.method();
关于java - 如何使用一个对象访问所有子方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37225745/