我有四个班级
人
员工
经理
老板
员工延长人员 经理扩展员工 老板扩展经理
我有方法:
员工有方法setSalary()
{
...
}
我只希望Boss课程能够改变员工的工资。 甚至不是Employee类也不是Manager类只有Boss类。
我该怎么做?我知道有办法使用instanceof但不知道如何
答案 0 :(得分:2)
如果您的Employee类有方法setSalary(..);
,那么您无法避免员工调用它的setSalary(..);
方法。私有方法也可以通过该类的另一个方法在类内部调用。
您可以做的是:将setSalary(..);
的可见性设置为包级别,并将Employee
和Boss
保留在同一个包中,将所有其他包保存在另一个包中。请注意,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
这样,在您的软件包外只有Boss
和Employee
,setSalary(..);
将无法调用Boss
方法,只能更新员工的工资将调用{{1}}的公共方法并将薪水和员工作为参数传递给它。
答案 1 :(得分:0)
我认为这是可能的,但它需要使用接口。你可以在这里找到答案: