我有一个关于调用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我已经更新了。你可以制作一个委托方法。 –
非常感谢您的建议。 –