我有一个基类
class Administrator()
{
void addEmployee(){ some code };
void Salary_PaySlip() { some code };
}
class HR: Administrator
{
// make use of addEmployee()
}
class Accountant: Administrator
{
// make use of void Salary_PaySlip()
}
这只是一个例子。
我希望Accountant
仅使用方法Salary_PaySlip()
。 addEmployee()
无法访问Accountant
方法。同样的方式class HR
应该只能访问addEmployee()
方法。
有人可以帮我解决这个问题吗?
先谢谢
答案 0 :(得分:3)
您的问题可以归结为单一责任原则,它与接口隔离原则密切相关(我建议您检查面向对象设计的SOLID原则:https://en.wikipedia.org/wiki/SOLID_(object-oriented_design))
您创建了一个可以同时添加员工和PaySlip的班级管理员。但是,您想要分离谁有权使用您班级的某些部分。这是该类应分为两个不同类的标志。每种方法一个。
然后,您就可以创建"客户端"类(使用方法的人)。我建议您最后使用合成而不是继承来访问管理员部分,因为它不确定是否有这种继承链接。
示例代码当然不相关(但如果没有更多信息可以做得更好)
public class EmployeeAdministrator()
{
public void addEmployee(){ some code };
}
public class SalaryAdministrator()
{
public void Salary_PaySlip() { some code };
}
public class HR
{
public EmployeeAdministrator Administrator { get; }
// make use of addEmployee()
}
class Accountant
{
public SalaryAdministrator Administrator { get; }
// make use of void Salary_PaySlip()
}