Java修改Picture接口方法后PolyLine实例信息无法输出到控制台问题咨询
问题原因
- 你修改接口后删除了
PolyLine类自定义的toString()重写逻辑,替换为实现Draw()方法,但main方法中仍使用System.out.println("Triangle = \n" + Triangle.toString());输出对象,程序不会自动调用Draw()方法。 - 此时
PolyLine类没有自身的toString()实现,会继承父类Line的toString()方法。你实例化PolyLine时调用的父类构造Line(Line[] l1)是空实现,没有给Line类的start、end成员变量赋值,二者默认值为null。 Line类的toString()方法会调用Length()计算边长,Length()方法直接访问end.x、start.x属性,会触发NullPointerException,程序运行中断,因此不会输出你预期的PolyLine相关信息。
修复方案
两种方案二选一即可:
- 修改main方法中的输出逻辑,把
System.out.println("Triangle = \n" + Triangle.toString());替换为Triangle.Draw();,直接调用你实现的接口方法输出信息,也符合你要使用接口的任务要求。 - 在
PolyLine类中补充重写toString()方法,把Draw()中的输出逻辑调整为字符串返回即可,兼容原有输出逻辑的同时也保留了接口的实现。
内容的提问来源于stack exchange,提问作者user17059077
相关产品推荐
相关产品推荐

