Java 如何使用单个对象访问所有子方法?
我有一个问题: 我们可以使用向下转换从子类访问所有方法 考虑下面的代码 基类:Java 如何使用单个对象访问所有子方法?,java,inheritance,overriding,Java,Inheritance,Overriding,我有一个问题: 我们可以使用向下转换从子类访问所有方法 考虑下面的代码 基类: public class BaseClass { public void method() { System.out.println("Base class"); } } ChildOne: public class ChildOne extends BaseClass { @Override public void method() { Syste
public class BaseClass {
public void method() {
System.out.println("Base class");
}
}
ChildOne:
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");
}
}
和客户端类
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();
}
因为我们不能创建接口或抽象类的对象。
在上面的代码中,我能够访问所有类中的所有方法。
考虑到我们已经用“方法定义”命名为<代码> BaseClass >代码>我在许多类中实现这个接口现在问题是我如何访问所有方法而不创建每个类的特定实例。
我想在单循环中这样做但是继承不允许我们这样做
如何做到这一点?您需要使用泛型类型的列表(
BaseClass
):list l=new ArrayList()代码>
多态性正在运行,循环将如下所示:
for (BaseClass o : l) o.method();
您需要使用泛型类型的列表(BaseClass
):listl=newarraylist()代码>
多态性正在运行,循环将如下所示:
for (BaseClass o : l) o.method();
这里基类是抽象类,方法是抽象的too@holidayCoder,是的,但该列表将包含已完成的BaseClass
实现,这些实现实现了来自父类的所有抽象方法。这里基类是抽象类,方法是抽象的too@holidayCoder对但是列表将包含BaseClass
的完整实现,这些实现实现了来自父类的所有抽象方法