Java 子类是否可以与其父类关联?

Java 子类是否可以与其父类关联?,java,oop,Java,Oop,我们被要求找出是否可能有一个子类与其父类有关联,以及它是否有意义 我举了自己的例子,比如: class CompanyPerson{} class Boss extends CompanyPerson{} class Employee extends CompanyPerson{ CompanyPerson boss; } 我知道这是可行的,我也尝试过Eclipse,事实上,它是可行的。但我不明白的是,为什么我需要这种关联,而不是在我的Employee类中使用Boss属性 当然,因

我们被要求找出是否可能有一个子类与其父类有关联,以及它是否有意义

我举了自己的例子,比如:

class CompanyPerson{}

class Boss extends CompanyPerson{}

class Employee extends CompanyPerson{
    CompanyPerson boss;
}
我知道这是可行的,我也尝试过Eclipse,事实上,它是可行的。但我不明白的是,为什么我需要这种关联,而不是在我的Employee类中使用Boss属性


当然,因为我对面向对象编程的观点不多,但在这种情况下,我看不出它的意义。

将“CompanyPerson”而不是“Boss”关联起来的好处是,如果你引入第三种类型的CompanyPerson前经理,您可以将其指定为您的上司,而无需更改现有代码的任何一行


始终将代码打开以进行扩展是一种很好的做法。在这方面,您可以简单地阅读一下原则

首先,您完全正确:在这个特定示例中,Boss类型的变量更有意义。为了更好地表达两者之间的关系,我会称之为主管,但这不是重点

然而,我认为你要的合同措辞有点古怪。误解可能存在于联想这个词中。正如您正确猜测的那样,类实例之间建立了关联,但契约明确要求子类和父类之间存在关联


因此,您实际上要寻找的是同一实例上的子类和父类之间的关联。换句话说,如果有一个Employee类型的实例,那么它本身是否与CompanyPerson类型有关联?

谢谢,我一直在关注这个示例,但是如果我有更多的类,就像你说的那样,让它们限制更少可能会很有用。为了更好地理解oop,我还将检查坚实的原则。您并不总是希望您的类是可扩展的。Joshua Bloch建议设计继承,否则就禁止它。我认为应该禁止它。