Java有一种关系

did*_*ido 2 java inheritance relationship

下面的陈述是否正确如下."一个男人有一个最好的朋友是狗."

public class Mann {
     private BestFriend dog;
     //etc
}
Run Code Online (Sandbox Code Playgroud)

jli*_*jli 5

我想说写一下会更正确:

public class Man extends Entity {
     private Entity bestFriend = new Dog(); // Where Dog extends Entity
     //etc
}
Run Code Online (Sandbox Code Playgroud)

为什么?比方说,你有一堆不同的实体,比方说的Man,CatDog.然后让它们各自扩展一个Entity类是有意义的,它指定每个实体应具有的各种属性.然后,每个人都可以拥有一个bestFriend属性,可以是任何其他属性Entity.

但是,正如评论中指出的那样,允许bestFriend在构造函数中指定a更为正确:

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);
Run Code Online (Sandbox Code Playgroud)

  • 我不确定所有'狗`是'朋友' (2认同)