メソッドのオーバーライド
サブクラスで親クラスのメソッドを再定義し、振る舞いを変更・拡張する方法を学びます。
「メソッドのオーバーライド」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
定義
メソッドのオーバーライドとは、サブクラスで親クラスのメソッドを再定義することです。メソッド名、引数、戻り値の型は同じですが、本体は新しくなります。これにより、各サブクラスが固有の振る舞いを提供できます。
オーバーライドする理由
オーバーライドによって、振る舞いをカスタマイズできます。たとえば、Dog と Cat はどちらも Animal ですが、それぞれ異なる鳴き声を出します。新しいメソッド名を作る代わりに同じメソッドをオーバーライドすることで、使い方を統一できます。
オーバーライドのルール
ルールは、メソッドのシグネチャが完全に一致すること、戻り値の型に互換性があること、アクセス範囲をより制限しないことです。コンパイル時に間違いを見つけるには、@Override アノテーションを使います。
super.method() の使用
super.method()を使えば、親クラスのメソッドを引き続き呼び出せます。これにより、動作を完全に置き換えるのではなく拡張し、1回の呼び出しで従来のロジックと新しいロジックを組み合わせられます。
よくある間違い
間違い: パラメーターの型を変更すると、オーバーライドではなくオーバーロードになります。@Overrideを付け忘れると、タイプミスを見逃す可能性があります。また、アクセス範囲を狭める変更(例: public → private)はコンパイルエラーになるため避けてください。
コード: オーバーライドの例
コード: DogとCatはAnimalのspeak()をオーバーライドします。Animal型として参照している場合でもサブクラス版が実行され、真のポリモーフィズムが示されます。
public class Main {
static class Animal {
void speak() {
System.out.println("Some generic animal sound");
}
}
static class Dog extends Animal {
@Override
void speak() {
System.out.println("Woof!");
}
}
static class Cat extends Animal {
@Override
void speak() {
System.out.println("Meow!");
}
}
public static void main(String[] args) {
Animal a1 = new Dog(); // upcast to Animal
Animal a2 = new Cat();
a1.speak(); // runs Dog version
a2.speak(); // runs Cat version
}
}
オーバーライドの確認
簡単な確認: メソッドのオーバーライドによって、サブクラスは何ができるようになりますか?
復習
復習: オーバーライドでは、同じシグネチャを持つメソッドを再定義し、サブクラスが動作をカスタマイズできるようにします。@Overrideを使い、必要に応じてsuperを呼び出してください。
よくある質問
「メソッドのオーバーライド」レッスンは無料ですか?
はい。「メソッドのオーバーライド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「メソッドのオーバーライド」で何を学びますか?
サブクラスで親クラスのメソッドを再定義し、振る舞いを変更・拡張する方法を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「メソッドのオーバーライド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- extendsとsuper
- メソッドのオーバーライド
- ポリモーフィズムと動的バインディング