关于java:我们可以使用扩展与关系

Can we use extends with Has a relationship

我们使用EDOCX1的0个关键字,使用OOP在Java中使用EDCOX1×1。但另一方面,我们也有has-a relationship,我们使用了has-a relationship的第二类中第一类的参考。我的问题是,如果我们有HAS-A关系,我们可以在实现中使用extends keyword吗?

假设我们这里有一个例子:

A"university" has several"departments". Without the existence of
"university", there is no chance for the"departments" to exist.

我们能把它写成(只是一个理解的粗略例子)吗?

1
2
3
4
5
6
7
8
9
class University extends Department
{
   Department d = new Department();
   University(String name, Department d)
    {
        this.Name=name;
        this.Department = d;    
    }    
}

或者当我们在另一个类中创建一个实体时,我们不能使用extends这个词?


您不能使用extends,但可以使用interface,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface HasDepartments {
    public Set<Departments> getDepartments();
}

class University implements HasDepartments {
    private final String name;
    private final Set<Department> departments = new HashSet<Department>();
    University(String name, Collection<Department departments) {
        this.name=name;
        this.departments = departments;    
    }
    public Set<Departments> getDepartments() {
        return departments;
    }
 }

但是,除非有其他可以有部门的事情,否则我不会麻烦。仅仅使用getDepartments()方法就足够了。


我建议你看看这个联系,了解IS-A和HAS-A之间的区别"是-关系"和"有-关系"有什么区别?爪哇

在Java中搜索组合、聚合、关联(HAS-A关系类型)

为了回答你的问题,使用它没有障碍,但你需要一个很好的理由从系里继承大学。