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

Java 类是否必须位于同一继承树上才能具有Has-a关系,java,oop,scjp,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() { ;

可能的答案是:

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());
    } 
}
在回答上述问题时,我选择了选项B、C、E和F


显然,唯一正确的答案是B、E和F。对于MyApp来说,与员工的关系必须在同一个继承树层次结构中。这是正确的吗?我认为,如果一个类将对象作为成员,它将自动具有has-a关系。

MyApp没有Employee,没有定义成员。MyApp有主要的方法,就是它。根据以下代码,MyApp有一名员工

MyApp要想与员工建立良好的关系,两者都必须 在同一继承树层次结构中。这是正确的吗

这是不对的

我认为,如果一个类将对象作为成员,它会自动 有一段恋情

你是对的。关键是,MyApp没有员工作为成员

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

否,例如:

为了使MyApp与Employee建立关系,Employee e应该是一个成员变量,而不仅仅是在静态方法中本地实例化

class Person{
    // Person has-a name, 
    // where Person is not a String,
    // neither reverse
    private String name; 
}
这是不对的。它与employee类紧密耦合,要使其松散耦合,它必须在接口或抽象类上工作。为了使其松散耦合,代码如下所示

E. The code is loosely coupled.

这是家庭作业吗?如果是,请贴上标签。好的,我知道了。谢谢大家的回复。主要的员工呢?或者局部变量不是成员?局部变量不是成员。
class Person{
    // Person has-a name, 
    // where Person is not a String,
    // neither reverse
    private String name; 
}
E. The code is loosely coupled.
interface IEmployee{
...
...
}

class Employee implements IEmployee {
...
...
}

public class MyApp implements Mungeable {
    public void doMunging() { ; }
    //declare interface type
    private IEmployee emp;
    //use DI to inject  an implementation of IEmployee type in MyApp 
    public MyApp(IEmployee object){
    emp = object;
    }
    public static void main(String[] args) {
        emp.setName("bob");
        System.out.print(emp.getName());
    } 
}