我正在上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。我有什么办法可以从TechnicalLead更改薪水字段,而无需在Employee类中添加其他setSalary方法,并且不将字段更改为public?

最佳答案

java - 是否可以直接更改已继承2级深度的字段?-LMLPHP

*该表用于了解访问修饰符的用法。

如果将变量访问修饰符设置为public或protected,则可以从同一包中的子类访问变量。如果包装再次不同,则不能使用protected到达那里。

要从任何地方访问它,请使用public,但只有在必要时才进行操作,这使得从任何地方查看和编辑该类的所有值成为可能。因此破坏了隐藏重要数据的概念。

您也可以阅读linkedIn(https://www.linkedin.com/pulse/puprodepri-ajitav-basak/)中的PuProDePri文章,以获取一些快速提示,以记住访问修饰符规则。

关于java - 是否可以直接更改已继承2级深度的字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58446739/

10-09 04:41