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

时间:2015-06-26 03:10:48

标签: java

假设我有Person(String name)和Student(String name,String course),它扩展了Person。

在学生上覆盖toString()时,什么被认为更好?

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

3 个答案:

答案 0 :(得分:4)

它根本不重要,但它归结为你想要学生和人的关系。如果您希望学生的%s方法始终为NotificationManager,那么当您修改学生的select t.col1 ,t.col2 ,first_value(lag_col2) over (partition by col2 order by ord) lag_col2 from (select t.* ,case when lag_col2 = col2 then 1 else 0 end ord from (select t.* ,lag (col2) over (order by col1) lag_col2 from table1 t )t )t order by col1 人员的toString()时,请确保这样做是可行的。但是,如果您希望学生的super.toString() + " course: " + course不依赖于人员toString(),则不要包含对Super的调用。

答案 1 :(得分:1)

第二种方法super.toString()并不好。因为toString()可以返回除name以外的任何其他内容。在你的情况下,第一个会更好。但是,使用super.toString()并不会有任何问题,只要您确定它只返回name并且永远都会。但我更愿意使用第一种方法。

答案 2 :(得分:1)

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

这两个选项几乎同样好。但是,从维护角度来看,第一个是更好的设计,如果要将新属性添加到Person类说地址,请考虑将来的场景。然后,您使用第一个选项,您可以避免在两个地方更新。通过选项一,更新Person的String方法也会在Students toString中添加新属性。

P.S。 : - 考虑使用StringBuilder而不是串联字符串。