如果您在超类中创建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()超类的形式



