我有一个关于调用toString方法的问题,我已经在父类中声明了在arrayList中保存的扩展对象。我有父“Product”类,然后我扩展了类“Smartphone”。
我的问题是我在父类和扩展类中声明了toString()方法,我需要调用这两个方法,但我不知道如何在存储在arrayList中的扩展对象上调用父toString()方法。 谢谢你的建议。
答案 0 :(得分:3)
您需要使用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()
答案 1 :(得分:1)
默认情况下,我们编写每个对象引用,它在内部调用自己的toString
方法。
如果未定义,则会调用其直接父级的toString()
方法。
但是如果你想使用子引用变量调用parent 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