1 回答
TA贡献1877条经验 获得超6个赞
将方法添加到父类。abstractgetInfo()
public abstract class AbstractClass {
public abstract String getInfo();
}
然后,在子类中重写此方法:
public class ChildClass extends AbstractClass {
@Override
public String getInfo() {
return "Info string";
}
}
然后,循环访问数组并在每个实例上调用该方法:
public static void printInfo (AbstractClass[] array){
for(AbstractClass child : array) {
System.out.printf("%s%n", child.getInfo());
}
}
编辑:如果无法向抽象类添加方法,则需要将循环中的每个元素转换为子类的类型:
public static void printInfo (AbstractClass[] array){
for(AbstractClass child : array) {
System.out.printf("%s%n", ((ChildClass)child).getInfo());
}
}
但要小心。这仅在您确定数组中只有 的实例时才有效。如果存在另一个子类的实例,您将获得 .ChildClassClassCastException
这样做也违背了拥有抽象类的目的,因为如果你只需要从那里的功能,你可以很容易地使用数组。ChildClass
添加回答
举报