如何在Java中建模Can-Be-A关系?

时间:2017-09-18 23:06:14

标签: java inheritance model multiple-inheritance composition

假设我有一个User课程,User可以是EmployeeApplicant,两者都可以(在其他地方申请工作),或者两者都没有(失业,不申请工作)。

如何在java中定义这种关系,以便User可以强制转换为Employee,但前提是它们实际被使用,同样适用于其他场景(不能转换为{ {1}}或Employee,如果他们失业并且没有申请工作)?

这是否需要为每个组合继承Applicant的单独类,即UserEmployeeApplicant

1 个答案:

答案 0 :(得分:1)

只是说明我认为在评论中的含义(未经测试)

public class User {

    /** this user’s employment, or null if unemployed */
    private EmployeeRecord employment;
    /** this user’s application, or null if not an applicant for any job */
    private ApplicantRecord application;

    // getters, setters etc.

}

如果相关,您甚至可以使用Collection<ApplicantRecord>来模拟用户可能一次申请多个作业。