栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使toString()方法还返回超类私有字段及其实例字段?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使toString()方法还返回超类私有字段及其实例字段?

如果您在超类中创建getter和setter,则可以通过这些方法访问变量。另一种可能性是将可见性从私有更改为受保护

第一个解决方案看起来像这样

雇员

public class Employee {    private String name;    private int id;    private double salary;    public Employee(String name, int id, double salary) {        super();        this.name = name;        this.id = id;        this.salary = salary;    }    public double getSalary() {        return salary;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public void setSalary(double salary) {        this.salary = salary;    }    @Override    public String toString() {        return "Employee [name=" + name + ", id=" + id + ", salary=" + salary + "]";    }}

经理

public class Manager extends Employee {    private double bonus;    public Manager(String name, int id, double salary, int bonus) {        super(name, id, salary);        this.bonus = bonus;    }    public double getSalary() {        double baseSalary = super.getSalary();        return (baseSalary + baseSalary * (bonus / 100));    }    @Override    public String toString() {        return "Manager [name=" + getName() + ", id=" + getId() + ", salary=" + getSalary() + ", bonus=" + bonus + "]";    }}

第二个(使用保护)

雇员

public class Employee {    protected String name;    protected int id;    protected double salary;    public Employee(String name, int id, double salary) {        super();        this.name = name;        this.id = id;        this.salary = salary;    }    public double getSalary() {        return salary;    }    @Override    public String toString() {        return "Employee [name=" + name + ", id=" + id + ", salary=" + salary + "]";    }}

经理

public class Manager extends Employee {    protected double bonus;    public Manager(String name, int id, double salary, int bonus) {        super(name, id, salary);        this.bonus = bonus;    }    public double getSalary() {        double baseSalary = super.getSalary();        return (baseSalary + baseSalary * (bonus / 100));    }    @Override    public String toString() {        return "Manager [name=" + name + ", id=" + id + ", salary=" + salary + ", bonus=" + bonus + "]";    }}

我个人会使用getter / setter方法,但这取决于您。

编辑:

toString()
在日食的日蚀的补充。您似乎无法使用getters和setter生成它(只是快速浏览,您可以在此处看到一些文档。我所做的工作是弄清楚如何编辑生成代码模板时使用的代码模板,
toString()
因此它包括
toString()
超类中的。

当您进入generate toString()对话框时,

<Default Template>
旁边有一个字段“ String Format”
。当您单击编辑按钮时,您可以创建一个新的代码模板。该模板会自动保存
<Default Template>
和,看起来应该像这样:

${object.className} [${member.name()}=${member.value}, ${otherMembers}]

最后,您只需要添加以下内容

[super: ${object.superToString}]

这样,它将显示

toString()
超类的形式



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号