私の抽象親クラスを拡張するサブクラスはほとんどありません。サブクラスには、日付などの同じ属性がほとんどありません。だから私の質問は、これらの属性(日付)のセッターとゲッターを抽象クラスで宣言する必要がありますか、それとも各サブクラスで宣言する必要がありますか?あるサブクラスでは「リリース日」であり、他の「日付」では「キャスト」する必要がありますか?
2 に答える
依存します。
多くの人が、継承(つまり:はa)ではなく構成(つまり:はa)の使用を提案しています。そしてほとんどの場合、それはあなたが何を達成したいかによります。両方のアプローチには賛否両論があります。
これらのプロパティを基本クラスに配置する場合は、すべてのクラスにこれらのプロパティがありますが、すべてのクラスにこれらのプロパティがあるわけではありません。優れた設計として、オブジェクトを完全に入力していない場合、つまり、一部のフィールドをnullまたは空のままにしておくと、目的が適切ではなくなります。オブジェクトは完全に入力されている必要があります。
つまり、ラッププロパティをビヘイビア(別のオブジェクト)に作成し、それらを使用するクラスに委任することができます。
あなたの直感を使って、正しいと感じ、あなたの人生を簡素化してください。
すべてのサブクラスが同じ目的で同じフィールドを使用していると言っている場合は、必ずそれを親クラスに追加して、重複を避けてください。サブクラスが両方とも異なる目的で「日付」フィールドを使用していると言っている場合(それらは異なる名前と呼ばれていると述べました)、おそらくサブクラス自体で宣言し、スーパークラスフィールドをそれ以上使用しないでください。 1つの目的(そうでない場合、これは長期的には非常に混乱します)。