我目前有一个类,我们称之为 Person,有一个像这样的构造函数。public class Person{ private String name; public Person(String name) { this.name = name; System.out.println("This person is: "+getName()); } public String getName() { return this.name; } public void setName(String name) { this.name = name; }}然后我们用更具体的 Person 类型继承该类,在本例中为 Employee。public class Employee extends Person{ private int id; public Employee(String name, int id) { super(name); this.id = id; System.out.println("This person is: "+getName()+", identified by #"+getId()); } public int getId() { return this.name; } public void setId(int id) { this.id = id; }}我想让它在创建对象时 Employee 打印它自己的语句,但它同时打印来自 Person 和 Employee 的打印语句。如何覆盖此语句以防止发生这种情况?有没有更好的打印到控制台的方法来防止这种情况发生?
3 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
当您调用 时super
,将调用父级的构造函数。无法避免:这就是super
目的。
如果您想println
在创建对象时调用不同的s,则必须将其println
放在构造函数之外。一个不错的选择是使用构建器或工厂模式,toString
在Person
和Employee
类中覆盖,并toString
从构建器或工厂调用。
添加回答
举报
0/150
提交
取消