使用两个类的覆盖方法

时间:2014-03-16 18:28:11

标签: java arrays methods arraylist tostring

我想要两个toString(),并希望通过只调用其中一个来打印它们。 我必须将class1的对象作为Array,将class2作为ArrayList。

主:

 public static void main(String[] args) {
    Main main = new Main();
    Class1 []class1 = new Class1[2];
    ArrayList<Class2> class2List = new ArrayList<Class2>();

    for(int i=0; i<class1.length; i++){
        class1[i] = getClass1Obj();
        class2List.add(getClass2Obj());   
    } 

    for(int i=0; i<class1.length; i++){
        printClass1(class1, i);            
    }                
}

public static void print(Class1[] cls1, int index){
        System.out.println(cls1[index].toString());
}

的Class1:

private Class2 class2;    

@Override
public String toString() {
    return getMethod() + getMethod2() + class2.toString();                             
}

等级2:

@Override
public String toString() {
    return getMethod3() + getMethod4();
}

这不起作用。可能是因为我创建不同对象的方式?

1 个答案:

答案 0 :(得分:0)

创建class1实例

时,应该添加对class2的引用
for(int i=0; i<class1.length; i++){
    class1[i] = getClass1Obj();
    Class2 class2 = getClass2Obj();
    class1[i].setClass2(class2);
    class2List.add(class2);   
} 

请记住创建一个setClass2方法

public setClass2(Class2 class2) { this.class2 = class2; }

这样,class1将引用class2并可以使用class2 toString