我们可以使用扩展与有关系

时间:2018-04-14 12:35:16

标签: java oop

我们使用extends关键字在Java中使用OOP使用is-a relationship。但另一方面,我们也有has-a relationship,我们使用has-a relationship第二类中的第一个类的引用。我的问题是,如果我们有一个关系,我们可以在实施中使用extends keyword吗?

假设我们在这里有例子:

  

“大学”有几个“部门”。没有存在   “大学”,“部门”没有机会存在。

我们可以把它写成(只是一个理解的粗略例子)

class University extends Department
{
   Department d = new Department();
   University(String name, Department d)
    {
        this.Name=name;
        this.Department = d;    
    }    
}

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

2 个答案:

答案 0 :(得分:1)

您无法使用extends,但您可以使用interface,如下所示:

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;
    }
 }

然而,除非有其他事情可以有部门,否则我不会打扰。仅University使用getDepartments()方法即可。

答案 1 :(得分:0)

我建议你看看这个链接,了解is-a和has-a之间的区别 What is the difference between IS -A relationship and HAS-A relationship? Java

还搜索java中的组合,聚合,关联(has-a relationship types)

回答你的问题,没有任何障碍可以使用它,但你需要一个很好的理由继承大学系。