我有一个带有几个子类的抽象类。测试器类有一个ArrayList,其中包含每个子类的1个对象。它们每个都有一个相同名称的方法,我如何遍历ArrayList并为每个对象调用该方法?
我的一个子类(其他基本相同):
public class MyMath extends Homework {
private int pagesRead;
private String typeHomework;
public MyMath(int pagesRead, String typeHomework) {
super(pagesRead, typeHomework);
}
public void createAssignment(int p) {
setPagesRead(p);
setTypeHomework(typeHomework);
}
public void toString(int pagesRead, String typeHomework) {
System.out.println("Homework type: " + typeHomework + ". Number of pages read: " + pagesRead + ".");
}
}
在我的测试类主要方法中:
ArrayList homework = new ArrayList();
homework.add(new MyMath(5, "Math"));
homework.add(new MyScience(5, "Science"));
homework.add(new MyEnglish(5, "English"));
homework.add(new MyJava(5, "Java"));
答案 0 :(得分:1)
好吧,如果在抽象类中指定了方法,并且您已经使用其中的所有对象构建了ArrayList,那么您应该只需遍历ArrayList(for循环)并只调用.method。 ()
答案 1 :(得分:0)
如果您的ArrayList是类型,并且您的界面也有该方法,那么您可以像这样调用它们
for(int i = 0; i < list.length();i++)
{
list[i].METHOD_NAME();
}
答案 2 :(得分:0)
您可以遍历包含对象的arraylist ant,并且可以在该对象上调用该方法。例如,
get its value
然后
not to change its value
答案 3 :(得分:0)
如果你还没有在课堂上介绍过泛型,你必须手动进行投射。如果你已经涵盖了泛型,你应该使用它们!请参阅lak91的回答。
public abstract class AbstractTest
{
public abstract void oneTwo( int i, String s );
public static void main(String[] args) {
List list = new ArrayList();
list.add( new One() );
list.add( new Two() );
for( Object test : list ) {
AbstractTest abTest = (AbstractTest) test;
abTest.oneTwo( 0, "test" );
}
}
}
class One extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("One");
}
}
class Two extends AbstractTest {
@Override
public void oneTwo( int i, String s )
{
System.out.println("Two");
}
}