在Java中,我的toString()无法正常工作

时间:2018-10-01 13:43:01

标签: java tostring

我有这段代码,并认为我覆盖的toString()会在子类和超类中触发

public class Person  {
    @Override
    public String toString(){
       System.out.printLn("im in Person  ");
       return "im in Person  ";
    }
}

public class Student extends Person {
    @Override
    public String toString(){

       System.out.printLn("im in Student");
       return "im in Student";
    }
}


Student s = new Student();

System.out.println(s.toString());

2 个答案:

答案 0 :(得分:2)

public class Person  {
    @Override
    public String toString(){
       return "im in Person  ";
    }
}

public class Student extends Person {
    @Override
    public String toString(){
         return String.format("%s\n%s", super.toString(), "im in Student");
    }
}

您可以像以前一样调用它。

答案 1 :(得分:1)

在面向对象的术语中,重写是指重写现有方法的功能。 在运行时,JVM会找出对象类型并运行属于该特定对象的方法。 因此,在您的示例中,程序在运行时将运行特定于Student对象的方法。

如果您需要从超类中调用该方法,则需要自己通过调用super.toString()来实现。