在 java 中,我的 toString() 未按预期工作

In java my toString() is not working as I expected

我有这段代码,我认为我覆盖的 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());
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");
    }
}

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

在面向对象的术语中,覆盖意味着覆盖现有方法的功能。 在 运行 时间,JVM 计算出对象类型并将 运行 属于该特定对象的方法。 因此,在您的示例中,在 运行 时间,程序 运行 是 Student 对象的特定方法。

如果需要调用父类class的方法,需要自己调用super.toString().