我有一個關於調用toString方法的問題,至此我已經在父類中聲明瞭保存在arrayList中的擴展對象。我有父母「產品」類,然後我擴展類「智能手機」。Java:在arraylist中存儲擴展對象並調用父項toString方法
我的問題是,我在父類和擴展類中聲明瞭toString()方法,我需要調用這兩種方法,但我不知道如何調用存儲在arrayList中的擴展對象的父toString()方法。 謝謝你的建議。
我有一個關於調用toString方法的問題,至此我已經在父類中聲明瞭保存在arrayList中的擴展對象。我有父母「產品」類,然後我擴展類「智能手機」。Java:在arraylist中存儲擴展對象並調用父項toString方法
我的問題是,我在父類和擴展類中聲明瞭toString()方法,我需要調用這兩種方法,但我不知道如何調用存儲在arrayList中的擴展對象的父toString()方法。 謝謝你的建議。
您需要使用super
來引用您的父類。
class A {
@Override
public String toString() {
return "A's toString()";
}
}
class B extends A {
@Override
public String toString() {
return super.toString() + " " + "B's toString()";
}
}
B b = new B();
System.out.println(b); // prints "A's toString() B's toString()"
編輯:
如果你的孩子的toString()
總是調用父類的,那麼你甚至不需要在孩子toString()
。
如果您想爲子女保留與父母不同的自定義toString()
,但您也希望能夠從子女調用父母的toString()
,請創建一個委派方法。
class B extends A {
@Override
public String toString() {
...
}
public String parentsToString() {
return super.toString();
}
}
B b = new B();
b.parentsToString(); // will return the output of A's toString()
默認情況下,我們編寫的每個對象引用,它在內部調用它自己的toString
方法。
如果未定義,則它將調用其直接父項toString()
方法。
,但如果你想打電話給父母的toString()
方法使用兒童引用變量然後
兒童定義toString
,並呼籲父母的toString
並添加自己的定義。
例如
class Parent {
@Override
public String toString() {
return "Parent";
}
}
class Child {
@Override
public String toString() {
return super.toString() + " " + "child";
}
}
Child child = new Child();
System.out.println(child); // prints parent child
謝謝你,但我有存儲在ArrayList的子對象,我想打電話給父母的toString()方法在ArrayList中這些對象。所以我不知道如何在arrayList –
的對象上調用super.toString我已經更新了。你可以製作一個委託方法。 –
非常感謝您的建議。 –