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属性を持つことができ、それは other である可能性があります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

男性は他の「タイプの親友」を持つことができるため、犬はタイプ別にすべきであるように見えます。

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' が 1 つ、それ以外の場合は妥当と思われます。

于 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 に答える