如何制作只能在Boss类中使用的方法

时间:2016-04-02 09:43:13

标签: java inheritance

我有四个班级


员工
经理
老板

员工延长人员 经理扩展员工 老板扩展经理

我有方法:
员工有方法setSalary() { ... }

我只希望Boss课程能够改变员工的工资。 甚至不是Employee类也不是Manager类只有Boss类。

我该怎么做?我知道有办法使用instanceof但不知道如何

2 个答案:

答案 0 :(得分:2)

如果您的Employee类有方法setSalary(..);,那么您无法避免员工调用它的setSalary(..);方法。私有方法也可以通过该类的另一个方法在类内部调用。

您可以做的是:将setSalary(..);的可见性设置为包级别,并将EmployeeBoss保留在同一个包中,将所有其他包保存在另一个包中。请注意,setSalary(..);

中的某些方法只会调用任何Employee Boss Boss

你会在public class Boss extends Employee { public void setSalaryFor(Employee employee, int salary) { employee.setSalary(salary); } } 中找到类似的方法:

public class Employee extends Person {

      private int salary;

      //Package visibility 
      void setSalary(int salary) { 
           this.salary = salary;
      }

}

您的Employee类将具有以下方法:

Employee

这样,在您的软件包外只有BossEmployeesetSalary(..);将无法调用Boss方法,只能更新员工的工资将调用{{1}}的公共方法并将薪水和员工作为参数传递给它。

答案 1 :(得分:0)

我认为这是可能的,但它需要使用接口。你可以在这里找到答案:

Can I limit the methods another class can call in Java?

Java: How to limit access of a method to a specific class?