Java:在arraylist中存储扩展对象并调用父toString方法
对于在arrayList中保存的扩展对象上调用toString方法,我有一个问题,我在父类中声明了该方法。我有家长“产品”类,然后我有扩展类“智能手机” 我的问题是,我在父类和扩展类中声明了toString()方法,我需要调用这两个方法,但我不知道如何对存储在arrayList中的扩展对象调用父toString()方法。Java:在arraylist中存储扩展对象并调用父toString方法,java,class,arraylist,tostring,Java,Class,Arraylist,Tostring,对于在arrayList中保存的扩展对象上调用toString方法,我有一个问题,我在父类中声明了该方法。我有家长“产品”类,然后我有扩展类“智能手机” 我的问题是,我在父类和扩展类中声明了toString()方法,我需要调用这两个方法,但我不知道如何对存储在arrayList中的扩展对象调用父toString()方法。 谢谢您的建议。您需要使用super引用您的父类 class A { @Override public String toString() { r
谢谢您的建议。您需要使用
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()
您需要使用
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()
方法,那么
在child中定义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
默认情况下,我们编写的每个对象引用都会在内部调用自己的
toString
方法
如果未定义它,则它将调用其直接父级的toString()
方法
但如果您想使用子引用变量调用父对象的toString()
方法,那么
在child中定义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中存储了子对象,我想对arrayList中的这些对象调用父对象的toString()方法。所以我不知道如何在ArrayListThat的对象上调用super.toString非常感谢你的建议。随时,我的朋友。快乐编码!:)谢谢,但我在arrayList中存储了子对象,我想对arrayList中的这些对象调用父对象的toString()方法。所以我不知道如何在ArrayListThat的对象上调用super.toString非常感谢你的建议。随时,我的朋友。快乐编码!:)