Java has-a 关系

标签 java inheritance relationship

下面的说法正确吗? “人最好的 friend 是狗。”

public class Mann {
     private BestFriend dog;
     //etc
}

最佳答案

我想说这样写会更正确:

public class Man extends Entity {
     private Entity bestFriend = new Dog(); // Where Dog extends Entity
     //etc
}
为什么?假设您有一堆不同的实体,例如 ManCatDog。那么让它们各自扩展一个 Entity 类就有意义了,该类指定每个实体应具有的各种属性。那么,每个实体都可以有一个 bestFriend 属性,该属性可以是任何其他实体

但是,正如评论中所指出的,允许在构造函数中指定 bestFriend 会更正确:

public class Man extends Entity {
    private Entity bestFriend;

    public Main(Entity bestFriend) {
        this.bestFriend = bestFriend;
    }
    //etc
}

...

Dog bobDog = new Dog();
Man bob = new Man(bobDog);

关于Java has-a 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307721/

相关文章:

inheritance - golang 关注点分离与可用性

c++ - 从基类的特定派生类型调用特定函数

java - 如何在 Java 中存储一对一关系

java - 我尝试运行这段代码,它运行时不会抛出错误,问题是它不会执行 for 循环我只是一个初学者,所以请

java - 转换为可移植文件路径

ios - Objective-C - 动态单例初始化程序?

sql - 如何在 SQL 数据库中创建记录之间的关系?

Java-EE-6 : How to store a boolean in a @ManyToMany and @ManyToOne relationships?

java - 使用 @PrimaryKey 0(零)初始化 Realm 对象在第二个对象上失败

java - 获取对模拟的调用次数