我们使用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
?
答案 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)
回答你的问题,没有任何障碍可以使用它,但你需要一个很好的理由继承大学系。