質問の要点に飛び込む前に、これは純粋に理論的な質問であることに注意してください。私は実際的な理由でこれには興味がありません。このタイプの状況をどのように処理するかについての基礎となるOOP理論に興味があります。
私が取り組んでいるプロジェクトには、密接に関連する2つのクラスがあります。1つは一般的な「user」クラスです。もう1つはサブクラス化されており、特定のユーザーが使用する追加機能を追加します。一般的な例として、「モデレーター」クラスを考えてみてください。
子が呼び出しても意味がない、ユーザークラスで使用可能なパブリックメソッドを処理するにはどうすればよいですか?
たとえば、User :: getUserWithId(id)を呼び出すことは完全に理にかなっています(このメソッドはDBからデータを取得し、そのデータを使用してユーザークラスを初期化して返します)。モデレータークラスでそのメソッドを使用することは(もしあれば)あまり意味がありません。
無視する必要があります。ユーザーがmoderator::getUserWithId(id)を呼び出した場合でも、ユーザーは要求どおりのユーザーを取得しています。メソッド名に関係なく、モデレーターを返すためにオーバーライドする必要がありますか?それとも、私がよく知らないOOPランドに、通話を「ブロック」できるものがありますか?