我正在上edx Java课程,其中一个模块任务是编写一个程序,该程序创建一个Employee类,然后由TechnicalEmployee进行扩展,然后由TechnicalLead进行扩展。我构建了一个TechnicalLead,然后获取了其父母的所有领域和方法。但是,系统要求我将TechnicalLead的薪水更改为我在TechnicalEmployee中设置的薪水的1.3倍。由于我们提供了需要使用的特定方法,因此,如果不在Employee类中添加我自己的自定义setSalary方法,就找不到直接从TechnicalLead更改工资的方法。我还将所有字段都设为私有。
public abstract class Employee {
private String name="";
private double salary=0;
private static int cnt=0;
private int id=0;
public Employee(String name, double baseSalary){
this.name=name;
this.salary=baseSalary;
this.id = ++cnt;
}
public abstract class TechnicalEmployee extends Employee {
private int checkins=0;
public TechnicalEmployee(String name){
super(name,75000);
}
public class TechnicalLead extends TechnicalEmployee {
boolean Manager=true;
public TechnicalLead(String name){
super(name);
}
TechnicalEmployee下有2个类,TechnicalLead下将baseSalary提高到1.3,SoftwareEngineer保持其初始baseSalary。我有没有办法在没有在Employee类中添加其他setSalary方法并且不将字段更改为public的情况下,从TechnicalLead更改工资字段?
*该表用于了解访问修饰符的用法。
如果您将变量访问修饰符设置为public或protected,则可以从同一包中的子类访问变量。如果软件包再次不同,则不能使用protected到达那里。
要从任何地方访问它,请使用public,但只有在必要时才进行操作,这使得可以从任何地方查看和编辑该类的所有值。因此破坏了隐藏重要数据的概念。
您还可以阅读linkedIn(https://www.linkedin.com/pulse/puprodepri-ajitav-basak/)中的PuProDePri文章,以获取一些记住访问修饰符规则的快速提示。