課題 7: 継承、super
キーワード、およびメソッドのオーバーライド
この割り当ては、Java での継承、super
キーワード、およびメソッドのオーバーライドを示します。 コードとその出力を詳しく見てみましょう。
おばあちゃんクラス:
このクラスは基本クラス (祖父母) を表します。 name
フィールドと work()
メソッドがあります。
<code class="language-java">package B15; public class Grandma { String name = "Stella"; // Note: Capitalized for consistency int age = 80; public void work() { System.out.println("Grandma is working."); // More descriptive output } }</code>
マザークラス:
このクラスは Grandma
から継承します。 work()
メソッドをオーバーライドし、独自の name
フィールドを追加します。 super
キーワードは、Grandma
の name
および work()
メソッドにアクセスするために使用されます。
<code class="language-java">package B15; public class Mother extends Grandma { String name = "Arasi"; // Note: Capitalized for consistency int age = 50; public void work() { System.out.println("Mother is working."); // More descriptive output System.out.println("Mother's name = " + name); System.out.println("Grandma's name = " + super.name); System.out.println("Grandma's age = " + super.age); super.work(); } }</code>
キッズクラス:
このクラスは Mother
から継承します。 work()
メソッドをオーバーライドし、study()
メソッドを追加します。 main
メソッドは Kid
オブジェクトを作成し、そのメソッドを呼び出します。
<code class="language-java">package B15; public class Kid extends Mother { String name = "Suman"; // Note: Capitalized for consistency int age = 30; public static void main(String[] args) { Kid kid = new Kid(); kid.work(); kid.study(); } public void work() { System.out.println("Kid is working."); // More descriptive output System.out.println("Kid's name = " + name); System.out.println("Mother's name = " + super.name); } public void study() { super.work(); System.out.println("Mother's age = " + super.age); System.out.println("Kid's name = " + name); System.out.println("Kid's age = " + age); System.out.println("Kid is studying."); // More descriptive output } }</code>
出力の説明:
出力には、継承階層を下位にカスケードするメソッド呼び出しが示されています。 kid.work()
が呼び出されると、Kid
の work()
メソッドが最初に実行され、「Kid is working.」が出力されます。次に、kid.study()
は super.work()
を呼び出して Mother
の work()
メソッドを実行します。次に、super.work()
が再度 Grandma
を呼び出して work()
の super
メソッドを実行します。 name
キーワードにより、親クラスから正しいメソッドが確実に呼び出されます。出力には、継承階層の各レベルの age
変数と
修正および改善された出力:
コードが改善されたことで、より説明的な出力が提供され、実行フローが理解しやすくなりました。 出力は次のようになります:
<code>Kid is working. Kid's name = Suman Mother's name = Arasi Mother is working. Mother's name = Arasi Grandma's name = Stella Grandma's age = 80 Grandma is working. Mother's age = 50 Kid's name = Suman Kid's age = 30 Kid is studying.</code>
以上がタスク-7の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。