いくつかのサブクラスが正しく作成されていませんでした。

私は、さまざまな種類の動物を表すクラス階層の開発を含むプロジェクトに取り組んでいます。親クラスとして Animal クラスを作成し、その後、哺乳類、鳥、魚などのさまざまな種類の生き物を表す多数のサブクラスを作成します。

Animal クラスで指定されている getSound() 関数を Mammal クラスでオーバーライドしたい。そこで、哺乳類クラスに、哺乳類が発する音を説明する文字列を生成する getSound() 関数を追加します。

public class Mammal extends Animal { @Override public String getSound() { return "Mammals make different sounds"; } }

次に、Mammal クラスを Dog クラスで拡張します。 Dog クラスの getSound() 関数をもう一度オーバーライドして、犬が発する特定の音を返したいと思います。

public class Dog extends Mammal { @Override public String getSound() { return super.getSound() + ", and dogs bark"; } }

そこで、スーパーを使用して Mammal クラスの getSound() メソッドを呼び出し、犬が発する音を追加する getSound() 関数を Dog クラスに記述します。

プログラムを実行して Dog クラスのインスタンスを作成すると、意図した結果とは異なります。 「哺乳類は異なる音を出し、犬は吠える」ではなく、「哺乳類は異なる音を出すが、犬は吠えない」という結果になります。

この問題を解決するには、scaler の記事で、Dog クラスの getSound() 関数を編集して、スーパーを使用せずに犬が発する音を返す必要があると述べていましたが、理解できず、理解できませんでした。それを達成する方法を知っています。誰かが私を助けることができますか?

コメントを投稿

0 コメント