我有这段代码,并认为我覆盖的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());
答案 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()
来实现。