super.toString()或使用属性名称

  • 本文关键字:属性 toString super java
  • 更新时间 :
  • 英文 :


假设我有Person(字符串名称)和Student(字符串名称,字符串课程),它们扩展了Person。

在Student中重写toString()时,什么被认为更好?

return super.toString() + " course: " + course;
//or
return "name: " + name + " course: " + course;

这根本不重要,但归根结底是你希望Student和Person的关系是什么。如果你希望Students的toString()方法始终是super.toString() + " course: " + course,这样当你修改Person的toString()时,Student的toString()就会改变,那么一定要这样做。但是,如果您希望Student的toString()不依赖于Person的toString(),则不要包括对Super的调用。

return super.toString() + " course: " + course;

这两种选择几乎都一样好。然而,第一个是从维护的角度进行更好的设计,如果您想向Person类添加新的属性,比如地址,请考虑将来的场景。然后,使用第一个选项可以避免在两个地方进行更新。通过选项一,更新Person的toString方法也会在Students toString中添加新的属性。

附言:-考虑使用StringBuilder,而不是连接字符串。

在第二种方法中super.toString()不好。因为toString()可以返回除name之外的任何其他东西。第一个对你来说会更好。但使用super.toString()不会有任何问题,只要你确信它只会返回name,而且永远都是。但我更喜欢使用第一种方法。

最新更新