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