为了账号安全,请及时绑定邮箱和手机立即绑定

你如何覆盖 Java 中的父构造函数?

你如何覆盖 Java 中的父构造函数?

阿晨1998 2021-10-06 10:16:28
我目前有一个类,我们称之为 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放在构造函数之外。一个不错的选择是使用构建器或工厂模式,toStringPersonEmployee类中覆盖,并toString从构建器或工厂调用。


查看完整回答
反对 回复 2021-10-06
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信