继承和私有变量

时间:2014-03-04 20:05:38

标签: java inheritance extend

在HourlyEmployee和SalariedEmployee子类中,我们调用super()将“name”传递给基类构造函数。我有两个问题:

  1. 变量名称来自哪里,这是aName变量的拼写错误?

  2. 如何调用setSalary()在这些子类中工作?

  3. 扩展Employee类是否为我们提供了setSalary()方法的副本,但是在方法内部有aSalary=salary;,其中不继承工资,因为它是私有的或继承只是让我们使用{来自基类的{1}}方法,这就是使用setSalary()传递名称的原因。

    super()

2 个答案:

答案 0 :(得分:6)

  1. 变量名称来自何处,这是aName变量的拼写错误?

    是的,这是一个错字。应为aName,否则无法编译。

  2. 如何调用setSalary()在这些子类中工作?

    扩展类时,子类继承了超类中的所有功能。这就是SalariedEmployeeHourlyEmployee类对setSalary()方法访问的原因:它们都继承了Employee类的功能。

    您应该注意,子类不会直接访问salary字段,而是通过setSalary()getSalary()方法访问{{1}}字段。这称为封装,用于限制对类成员的直接访问。

答案 1 :(得分:1)

  1. public Employee(String aName)是公共的,因此您可以从扩展类
  2. 调用它
  3. 私有字段和方法是从扩展类继承的,但它们不能从中访问。如果您使用调试器,您可以看到私有字段是继承类的一部分,但您没有可见性。