Java 子类和继承的问题
假设我有一个超类Java 子类和继承的问题,java,class,subclass,superclass,Java,Class,Subclass,Superclass,假设我有一个超类Staff,它有通用变量,比如名称、地址等。 共有4个子类医生,护士,接待员和办公室管理人员,每个子类都有唯一的变量和方法。 此设置的问题是,Doctor也可以是OfficeManager,因此需要访问OfficeManager中的变量和方法 医生实例是否有办法访问OfficeManager中的方法? 将Staff作为超类和4个子类是理想的设计吗 如有其他想法,将不胜感激 另外,我还没有开始起草代码,因为我还不知道设计阶段,即类。使用接口。让您的接口要求您为希望在类中具有公共属性
Staff
,它有通用变量,比如名称、地址等。
共有4个子类医生
,护士
,接待员
和办公室管理人员
,每个子类都有唯一的变量和方法。
此设置的问题是,Doctor
也可以是OfficeManager
,因此需要访问OfficeManager
中的变量和方法
医生实例是否有办法访问OfficeManager中的方法?
将Staff
作为超类和4个子类是理想的设计吗
如有其他想法,将不胜感激
另外,我还没有开始起草代码,因为我还不知道设计阶段,即类。使用接口。让您的接口要求您为希望在类中具有公共属性的每个属性实现get方法。然后,您可以在一个具体类甚至抽象类中实现多个接口。如果多个子类需要相同的功能,则应将该功能移动到Staff类或Staff与Doctor之间的某个级别。这取决于功能和意图。子类之间不应该互相知道,这样会破坏整个想法 如果
医生
也可以是办公室管理者
他们肯定应该是接口。这样,您就可以拥有类似于:
public class VeryImportantPerson implements Doctor, OfficeManager {
否则,您使用
Staff
界面和其他4个扩展界面的方法听起来不错。如果一个类既可以是医生也可以是办公室经理,那么它们就不应该是类。你可以把它们做成接口
或者,您可以更改类层次结构以表示职责而不是人员。然后,您可以拥有一个包含职责列表的Person类。您应该创建一个名为ROLE的枚举,该枚举具有枚举值,例如:医生、护士、办公室经理,并且员工的实例应该拥有一组角色 这样,例如在Staff类中找到的方法中,您可以:
public void fireEveryoneAndSetTheBuildingOnFire(){
if(!thisPersonHoldsOfficeManagerRole()){
// Exception here.. Required role not found..
}
fireEveryone();
setTheBuildingOnFire();
}
也许可以将作业本身视为可以装饰staff对象的角色。为每个子类创建一个接口,该接口具有它可以执行的功能,当您创建一个实现“Manager”接口的医生类时,它将可以访问Manager功能 如果需要更复杂的东西,可能需要重新考虑层次结构 比如说
*Staff
-management
*Manager
*recieption
-practioner
*doctor
*nurse
通用变量?当你描述你的问题时要小心关键词。是的,我的意思是就像标准变量一样,所有子类都有共同点。你会如何使用它?您是否拥有一个staff对象数组,并将其强制转换为Doctor以使用
curePeople()
方法,还是将其强制转换为OfficeManager以使用manageOffice()
方法?它们会有唯一的公共方法,还是只有唯一的私有方法和相同公共方法的不同实现?这个设计的目的是什么?@user3074612在Java中有一个称为泛型的概念,稍后您可能会介绍它。Keppil的意思是只有在处理Java泛型时才应该使用泛型这个词;患者、处方等和办公室经理都会有一个方法manageRecords(),也许您应该详细说明如何实现这一点。现在,这有点太短了,不能成为一个真正的答案。这样,每个新的角色组合都应该在代码中创建,而不是在运行时创建?当心!