java - 继承了2级的字段可以直接修改吗?

标签 java

我正在做一门 edx Java 类(class),模块任务之一是编写一个程序来创建一个 Employee 类,然后由 TechnicalEmployee 扩展,并由 TechnicalLead 扩展。我构建了一个 TechnicalLead,然后获取其父级的所有字段和方法。但是,我被要求将 TechnicalLead 的薪资更改为我在 TechnicalEmployee 中设置的薪资的 1.3 倍。由于我们获得了需要使用的特定方法,因此如果不在 Employee 类中添加我自己的自定义 setSalary 方法,我无法找到直接从 TechnicalLead 更改工资的方法。我还将所有字段设置为私有(private)。

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 的基本工资加薪到 1.3,而 SoftwareEngineer 则保持其初始基本工资。有没有办法让我更改 TechnicalLead 的薪资字段,而无需在 Employee 类中添加额外的 setSalary 方法,并且无需将该字段更改为公共(public)字段?

最佳答案

Access Modifier

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

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

要从任何地方访问它,请使用 public,但仅在必要时才这样做,因为这样就可以从任何地方查看和编辑该类的所有值。从而破坏了隐藏重要数据的概念。

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

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

相关文章:

Java 应用程序属性文件

java - 具有唯一 ID 的 ArrayBlockingQueue

java - GWT Places/Activities - 导航应该使用什么?

java - Android MapView 类未找到

java - 将 JAR 文件添加到 web-inf/lib 文件夹而不将其包含在 pom.xml 中

java - 从枚举中选择一个随机值?

java - 即使 else if 条件通过,else 语句仍会运行

java - 你好,我想做一个程序,它存储名称并在写入“stop”结束时停止,并且程序显示存储在其中的名称

java - 如何保存用户上次阅读的页码

java - 如果应用程序是从 google play 下载的,android facebook 登录将停止工作