[英]toString methode for class inherrited from arrayList
我正在做一些自然语言处理,因此实现了一个Sentence类,基本上是一个带有一些元信息的ArrayList。 我想写覆盖它的toString()方法,该方法只是粘贴用空格分隔的字符串。 我通过使用继承的get方法使其工作,但是我想知道是否有可能和更好(就效率和编码实践而言)直接访问字段。
这是我班的简化版:
public class Sentence extends ArrayList<String> {
int sentimentScore;
String Speaker;
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
for(int i =0; i < super.size(); i++){
sb.append(super.get(i));
sb.append(" ");
}
return sb.toString();
}
最好使用get()
方法。 在速度方面,它不会降低代码的速度(如果您不这么认为,则应在坚持这一信念之前编写一个小程序来演示速度下降的影响)。 更重要的是, ArrayList
不公开其内部字段,这是一个很好的设计。 如果维护者决定更改ArrayList
的内部实现,则此设计会将任何将来的副作用屏蔽给其他人(扩展它的子类)。
顺便说一句,您可能还需要考虑一种替代设计-而不是让Sentence
扩展 ArrayList
,而是让Sentence
包含 ArrayList
。 这就是所谓的继承原则。
摘自Wikipedia: https : //zh.wikipedia.org/wiki/Composition_over_inheritance
面向对象编程中的继承之上的 组合 (或复合重用原理 )是这样的原理,即类应通过其组合(通过包含实现所需功能的其他类的实例)实现多态行为和代码重用,而不是从基类或父类继承类。 这是OOP经常陈述的原则,例如在有影响力的设计模式中:“从'类继承'到从'对象组成'的偏爱”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.