Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在arraylist中存储扩展对象并调用父toString方法_Java_Class_Arraylist_Tostring - Fatal编程技术网

Java:在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

对于在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()

您需要使用
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非常感谢你的建议。随时,我的朋友。快乐编码!:)