Java 如何从父类而不是超类调用重写的方法?

Java 如何从父类而不是超类调用重写的方法?,java,inheritance,tostring,super,Java,Inheritance,Tostring,Super,我有一个抽象类Mower,它重写了toString()方法。草坪拖拉机类扩展了割草机。它重写toString()方法并调用super.toString()作为该方法的第一行。然后,我有一个商业类,它扩展了LawnTractor并重写了toString(),并在第一行调用super.toString()。 当实例化一个商业对象(声明为割草机对象)并调用它的toString()时,我希望它打印割草机和割草机的两个属性,然后打印它自己的属性。相反,它只打印割草机的属性,然后打印自己的属性。如何在Com

我有一个抽象类Mower,它重写了toString()方法。草坪拖拉机类扩展了割草机。它重写toString()方法并调用super.toString()作为该方法的第一行。然后,我有一个商业类,它扩展了LawnTractor并重写了toString(),并在第一行调用super.toString()。 当实例化一个商业对象(声明为割草机对象)并调用它的toString()时,我希望它打印割草机和割草机的两个属性,然后打印它自己的属性。相反,它只打印割草机的属性,然后打印自己的属性。如何在Commercial中调用或重写toString()方法,以便它调用其父级(LawnTractor)toString(),而不仅仅是超类(Mower)


因此,听起来您试图做的是创建一个tostring层次结构,以便在有对象图时打印。因此,您所需要做的就是将super的toString追加到链的上游。(如果我理解正确)

这是割草机课

public class Mower {
    @Override
    public String toString() {
        return "Mower toString\n";
    }
}
朗特

public class LawnTractor extends Mower {
    @Override
    public String toString() {
        String superString = super.toString();
        return superString + "LawnTractor toString\n";
    }
}
商业的

public class Commercial extends LawnTractor {
    @Override
    public String toString() {
        String superString = super.toString();
        return superString + "Commercial toString\n";
    }
}
主类来运行它。请参见下面的输出。这就是你要做的

public class Main {
    public static void main(String[] args) {
        Mower mow = new Commercial();
        System.out.println(mow.toString());

    }
}
这是您的输出。我相信这就是你要找的。如果没有,请澄清

Mower toString
LawnTractor toString
Commercial toString

您希望对象在返回字符串中显示的顺序可以根据您将它们附加在一起的方式重新排序。割草机可以是第一台也可以是最后一台。

我意识到了我的错误。我的Mower类有tostring()方法,但不重写tostring()方法(语法上的差异)

请在您的描述之外包含一个代码片段,因为我发现在NetBeans中,我需要在方法菜单打开时查看它的javaDoc,指定要调用哪个super.toString()。但是当我把代码交给我的教授时,这种选择会转移吗?有什么方法可以保证我的决定吗?请给我们看看你的代码。你还没有告诉我们你的问题是什么,只是你认为是什么。(例如,是什么让你如此确定没有调用
LawnTractor.toString
)请在你的帖子中包含你所询问的代码,最好是作为一个。这是我的代码。事实上,我意识到了我的错误。我的Mower类有tostring()方法,但不重写tostring()方法(语法上的差异)。谢谢你们的帮助!
Mower toString
LawnTractor toString
Commercial toString