以下は、次のステートメントに対して正しいでしょうか。「男には犬という親友がいる。」
public class Mann {
private BestFriend dog;
//etc
}
以下は、次のステートメントに対して正しいでしょうか。「男には犬という親友がいる。」
public class Mann {
private BestFriend dog;
//etc
}
次のように書く方が正しいと思います。
public class Man extends Entity {
private Entity bestFriend = new Dog(); // Where Dog extends Entity
//etc
}
なんで?、、、など、さまざまなエンティティがたくさんあるMan
とCat
しDog
ます。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);
男性は他の「タイプの親友」を持つことができるため、犬はタイプ別にすべきであるように見えます。
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
。
man の余分な 'n' が 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 は犬へのポインター (または参照) です。