可以直接更改继承了2级的字段吗?

问题描述 投票:0回答:1

我正在上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更改工资字段?

java
1个回答
0
投票

Access Modifier

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.