我们被要求查找是否可能有一个与其父类有关联的子类,以及它是否有意义。
我做了我自己的例子:
class CompanyPerson{}
class Boss extends CompanyPerson{}
class Employee extends CompanyPerson{
CompanyPerson boss;
}
我明白这是有效的,我也试过Eclipse,实际上,它的确有效。但我不明白的是,为什么我需要这种关联而不是在我的Employee类中拥有Boss属性。
当然因为我对面向对象编程没有广泛的看法,但在这种情况下,我看不到它的重点。
答案 0 :(得分:1)
将'CompanyPerson'与'Boss'关联起来的好处是,如果您引入第三种类型的CompanyPerson(例如经理),您将能够将其指定为您的老板,而无需更改现有的一行代码。
最好始终将代码打开以进行扩展。在这方面,您可以简要阅读SOLID原则
答案 1 :(得分:0)
首先,你是完全正确的:在这个特定的例子中,Boss
类型的变量更有意义。我只是称之为Supervisor
,以便更好地表达两者之间的关系,但现在就在这一点之外。
但是,我认为你被要求的合同有点奇怪。误解可能存在于关联这个词中。正如您所猜测的那样,在类的实例之间建立了关联,但是契约明确要求子类和父类之间的关联。
所以你实际上正在寻找的是同一个实例上的子类和父类之间的关联。换句话说,如果存在Employee
类型的实例,它是否与类型CompanyPerson
有关联?