java - 类是否必须位于同一继承树上才能具有 Has-A 关系

标签 java oop scjp

class Employee {
    private String name;
    void setName(String n) { name = n; }
    String getName() { return name; }
}
interface Mungeable {
    void doMunging();
}
public class MyApp implements Mungeable {
    public void doMunging() { ; }
    public static void main(String[] args) {
        Employee e = new Employee();
        e.setName("bob");
        System.out.print(e.getName());
    } 
}

以及可能的答案:

Which are true? (Choose all that apply.)
A. MyApp is-a Employee.
B. MyApp is-a Mungeable.
C. MyApp has-a Employee.
D. MyApp has-a Mungeable.
E. The code is loosely coupled.
F. The Employee class is well encapsulated.

在回答上述问题时,我选择了选项BCEF

显然唯一正确的答案是BEF。为了使 MyApp 与 Employee 具有 Has-A 关系,两者必须位于同一继承树层次结构中。它是否正确?我认为如果一个类将对象作为成员,它会自动具有 Has-A 关系。

最佳答案

MyApp 没有 Employee,没有定义成员。 MyApp 有 main 方法,就是这样。根据下面的代码,MyApp has-a Employee

public class MyApp implements Mungeable {
    public void doMunging() { ; }
    private Employee;
    public static void main(String[] args) {
        Employee e = new Employee();
        e.setName("bob");
        System.out.print(e.getName());
    } 
}

关于java - 类是否必须位于同一继承树上才能具有 Has-A 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703228/

相关文章:

java - 一举取代整个阵列。

java - Gson JsonObject 复制值影响其他 JsonObject 实例

oop - 策略与桥梁模式

scjp - 树集子集

java - Var-arg of object arrays vs. object array——试图理解一道SCJP自测题

java - 当之前的测试在我的双链表中正常工作时,代码在节点中存储错误的数据,并给我一个 OutOfMemoryError

java - Vert.x 是否对单个 Verticle 具有真正的并发性?

当涉及泛型(特别是 List)时,通过继承重用 Java 代码?

.net - 是否需要封装Collections?

java - id = 1 - id 是原子的吗?