extendsとsuper
extendsで基底クラスを再利用し、superで親クラスのコンストラクタやメソッドを呼び出します。例は小さく読みやすく保ちます。
「extendsとsuper」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
継承とは何ですか
継承を使うと、あるクラスを再利用して拡張できます。子クラスは親クラスのフィールドとメソッドを受け継ぎ、独自のものを追加できます。似た型の間で共通コードを共有するときに使います。
extends の使用
extends キーワードを使ってサブクラスを作成します。例として、class Car extends Vehicle と書けます。サブクラスは親クラスの特定の種類であり、親クラスの振る舞いを再利用できます。
コンストラクタ内の super(...)
子クラスのコンストラクタ内で、super(...) は親クラスのコンストラクタを呼び出します。これにより、まず親クラスの部分が初期化されます。明示的に呼び出さない場合、存在すれば Java がデフォルトで親クラスの引数なしコンストラクタを呼び出します。
super.method()
super.someMethod() と書いて、親クラス版のメソッドを使用することもできます。子クラスが基底のロジックに少しだけ処理を追加したい場合に便利です。
使う場面
明確な is-a 関係がある場合に継承を使います。たとえば、Car は Vehicle です。is-a 関係に当てはまらず、機能を再利用したいだけの場合は、コンポジションを優先します。初心者のうちは、クラス階層を浅く保ちます。
コード:extends と super
コードでは、Car が Vehicle を extends します。コンストラクタは super を呼び出して brand を設定します。子クラスのメソッドは super.printInfo() を呼び出した後、独自の行を追加します。
public class Main {
// Base class with a simple constructor and method
static class Vehicle {
String brand;
Vehicle(String brand) {
this.brand = brand; // parent sets its own field
}
void printInfo() {
System.out.println("Vehicle brand: " + brand);
}
}
// Subclass reuses Vehicle with extends
static class Car extends Vehicle {
int doors;
Car(String brand, int doors) {
super(brand); // call parent constructor first
this.doors = doors;
}
void printInfo() {
// Add extra info, but reuse parent behavior
super.printInfo(); // call parent method
System.out.println("Doors: " + doors);
}
}
public static void main(String[] args) {
// Create a Car (which is a Vehicle)
Car c = new Car("EcoMotors", 4);
c.printInfo(); // shows parent info then child info
}
}
super(...) の確認
確認問題:サブクラスのコンストラクタ内で super(...) を呼び出すと、何が行われますか。
まとめ
まとめ:extends は is-a 関係を設定し、super(...) は親クラスを初期化し、super.method() は基底のロジックを再利用します。浅く単純なクラス階層を優先します。
よくある質問
「extendsとsuper」レッスンは無料ですか?
はい。「extendsとsuper」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「extendsとsuper」で何を学びますか?
extendsで基底クラスを再利用し、superで親クラスのコンストラクタやメソッドを呼び出します。例は小さく読みやすく保ちます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「extendsとsuper」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- extendsとsuper
- メソッドのオーバーライド
- ポリモーフィズムと動的バインディング