理由は、OO)の原則/ガイドラインに違反している場合から、パブリックAPIの一部として保護されていると見なす場合までさまざまです。
次に、いくつかの派生クラスに同じメンバーがある場合はどうすればよいですか?それらを基本クラスで宣言して継承する必要がありますか?または、派生クラスで複数回宣言する必要がありますか?
たとえば、クラスWarriorとクラスWizardの両方にhp、atk、defなどのメンバーがあり、基本クラスPlayerから派生しています。クラスWarriorには独自のメンバーfuryがあり、クラスWizardは独自のメンバーマナを持っています。
したほうがいい:
どちらがより良い実践であり、なぜですか?
PS:この質問は主観的な意見に基づいていると言われましたが、それでも、いつ実装するかを人々がどのように決定するかについて知りたいと思います。ありがとうございます。
あなたは間違った方法で質問をしています。
正しい質問は、「私の基本クラスは、それにちなんで名付けられたものを実装していますか?」です。
プレイヤーはHPを持っていますか?その場合、HPは派生クラスではなくプレーヤークラスのメンバーである必要があります。そうでない場合、プレーヤーはプレーヤーを実装しないためです。
このメンバーを保護する必要がありますか?プライベートにして、プレーヤークラスに不変式の適用を任せてみませんか(たとえば、最小値を超えないようにしたり、許可された最大値を超えないようにしたり、0に達した場合に死を引き起こしたりします)。繰り返しますが、そうでない場合、Playerは実際にはプレーヤーを実装していませんが、「ここでは、プレーヤーにとって便利なものをいくつか用意しています」。
セバスチャンはすでに、クラスのデザインについての彼のアドバイスで頭を釘付けにしました。
完全を期すために、ここにいくつかの非常に重要な追加ポイントがあります。
Warrior
)でデータを定義する場合は、保護することをお勧めしますプライベートよりも、基本クラスで想定したとおりです。これは、後でWarriorをBotWarrior
およびAlienWarrior
にさらに派生させることにした場合に役立ちます。