我有一个名为Items和3个派生类的基类,在Items基类中我有一个表单的打印函数
public void print(){
System.out.println("ID " + id + " Title " + title + " <" + year + "> ");
}
在每个派生类中,我通过super.print();
调用Items打印函数,然后是与派生类相关的特定打印函数。
我的问题是,无论何时从其中一个派生类执行打印,打印文本都不在同一行。因此super.print()
将位于派生类打印函数上方的行中。如何让它们在同一条线上?
答案 0 :(得分:4)
打印后,你无法安全地收回换行符(根据终端输出退格符号,但你真的不想这样做)。我认为构建它的逻辑方法可能是一个超类函数:
public void print() {
System.out.println(toString());
}
然后根据需要覆盖toString
:
public String toString() {
return "ID " + id + " Title " + title + " <" + year + "> ";
}
public String toString() {
return super.toString() + " ... more stuff";
}
答案 1 :(得分:2)
不要在基类println
上使用print
代替
答案 2 :(得分:2)
将println
替换为System.out.print
答案 3 :(得分:2)
在这里,覆盖toString()
似乎更合适。然后,您可以根据需要控制打印,它可以转到System.out
,文件,记录器和其他所有内容。
@Override public String toString() {
return String.format("ID %s Title %s <%d> ", id, title, year);
}
然后在子课程中:
@Override public String toString() {
return super.toString() + " whatever";
}