2014-09-29 55 views
-1

//考慮代碼(*)印刷幾類有一個循環,JAVA

class Whatever { 
     Class1 c1 = new Class1[10]; 
     CLass2 c2 = new Class2[10]; 
     Class3 c3 = new Class3[10]; 

    void printArray(Object[] a) { 
     for(Object b: a) { 
      System.out.println(b); 
     } 
    } 
} 

然後,當我要打印保存在這些類 他們已經在其他類初始化的名字,並有this.name =名稱設置爲 並且對它們都是唯一的。 因此,當嘗試使用打印它們:

其例如打印

的Class1 @ 124124124 //地址

那麼怎樣訪問傳遞到方法的類的實際成員?

這實際上可能嗎?

+0

你是什麼意思的成員?它的方法? – ControlAltDel 2014-09-29 15:55:03

回答

0

您可以在Class1Class2覆蓋toString()法等這樣的:

@Override 
public String toString() { 
return this.memberX + " " + this.memberY; 
} 

,它將打印memberX和memberY。 System.out.println(x);默認調用x.toString();

+0

告訴我如何在Class對象上覆蓋toString? – ControlAltDel 2014-09-29 15:58:10

+0

@ControlAltDel我看到你編輯了你的評論。但我仍然不明白你的問題... – Lucas 2014-09-29 16:04:40

+0

原始海報有他正在打印的Class對象的數組。打印輸出甚至說Class1 @ ...你可以在你設計的對象上重寫toString,但是如果你調用System.out.print(myObj.getClass()),那麼這將不起作用。 – ControlAltDel 2014-09-29 16:07:58

0

我不認爲你在你的問題中正確使用「class」這個詞。通過「那麼當我想打印保存在這些類中的名字」時,我假設你的意思是保存在Class1,Class2等的的實例中的名字......初始化並存儲在給定數組中。

好像你想讓你的課程共享一些功能。你說你有一個名字字段,爲什麼不通過接口指定他們真的可以做到這一點?

public interface Namable{ 
    public String getName(); 
} 

然後讓所有的類實現這個接口...

public class Class1 implements Namable{ ... } 
public class Class2 implements Namable{ ... } 
etc... 

然後你就可以改變你的方法的簽名採取Namables的數組,每個可以調用getName()方法。

void printArray(Namable[] a) { 
    for(Namable b: a) { 
     System.out.println(b.getName()); 
    } 
}