2

以下陈述是否正确。“一个人有一个最好的朋友是一只狗。”

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

4 回答 4

5

我想说这样写会更正确:

public class Man extends Entity {
     private Entity bestFriend = new Dog(); // Where Dog extends Entity
     //etc
}

为什么?假设您有一堆不同的实体,例如ManCatDog。然后让它们各自扩展一个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);
于 2012-04-25T00:15:23.477 回答
2

看起来 Dog 应该按类型,因为男人可以有其他“最好的朋友类型”:

public class Mann {
     private Dog bestFriend;
     //etc
}

更新

最接近真实的实现将如下所示:

public interface Friend {}

public class Man implements Friend {}

public class Dog implements Friend {}

public class FriendRelationship {
    private Friend first;
    private Friend second;

    public FriendRelationship(Friend first, Friend second) {
        this.first = first;
        this.second = second;
    }
}

Man aPerson = new Man();
Dog aBog = new Dog();
FriendRelationship bestFriends = new FriendRelationship(aPerson, aDog);

这种方式可以表达任何实体之间的朋友关系。不需要通用基类。您只需要实现Friend接口。

于 2012-04-25T00:14:14.233 回答
1

在 man 中多加一个“n”,否则它似乎是合理的。

于 2012-04-25T00:14:10.023 回答
1
public class Man extends world.life.animalia.chordata.mammalia.primates.hominidae.hominini.homo.Homo_sapiens {
    private world.life.animalia.chordata.mammalia.carnivora.canidae.canis.c_lupus.CanisLupusFamiliaris dog = new world.life.animalia.chordata.mammalia.carnivora.canidae.canis.c_lupus.CanisLupusFamiliaris();
    private concept.population.social.Friend bestFriend = dog;
}

这样 bestFriend 是指向狗的指针(或引用)。

于 2012-04-25T00:29:55.187 回答