java中多重继承的接口,建模问题

时间:2013-08-19 00:40:07

标签: java interface multiple-inheritance

我有以下情况:

enter image description here

如您所见,我有两个课程,讲师和学生。课程教师助理是讲座和学生的混合,因为他们可以报名参加课程,但他们也可以讲授一些基本的主题(不被视为讲师)。我想到了使用Interfaces来模拟这种情况的想法,因为我将用Java编程。这种建模是否正确?

enter image description here

这样TA类就会实现接口教学,其中包含分配给该学生教授的课程数组。

但如果我以这种方式建模,我会发现我正在失去班级讲师。我如何能够模拟这种多重继承的情况,而不是失去班级讲师?我的意思是,如果我将讲师编程为一个界面,它将不会有任何我需要进一步的方法,例如,其工资收益的计算等等。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以将Lecturer置于界面中,然后让TeachingAssistantProfessor实现它。 TeachingAssistant可以延长Student,因为从逻辑的角度来看,助教是学生。

答案 1 :(得分:1)

一种选择是拥有TeacherTeachable接口 然后让Lecturer实现Teacher(因为想要像Teacherable这样的词!),Student实现TeachableTA同时实现TeacherTeachable

LecturerStudentTA都可以延伸Faculty_Staff

答案 2 :(得分:1)

在我看来,{p> tbodt's approach通常是健全的。您只需要问:如果某些客户端代码需要Lecturer,那么TA的实例是否足够?如果存在问题,您可以选择使用合成来设计它,将教学能力抽象为自己的单独类,如TeachingJob(我想不出更好的名字)。这样,实际ProfessorTeachingAssistant分享的唯一事情就是他们有类似的教学工作;它们不属于同一个“类”(实际上是接口)。

混合方法是让TeachingJobLecturer界面相关,例如Lecturer会有assign(TeachingJob assignment)方法。