抽象クラス
抽象クラスと抽象メソッドを宣言し、インスタンス化できない理由を理解します。サブクラスが設計を完成させる方法も確認します。
「抽象クラス」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
抽象クラスとは
抽象クラスは共通の概念を定義し、一部のメソッドを本体なしで残せます。また、コードを持つ通常のメソッドも含められます。サブクラスが空欄を埋めるテンプレートだと考えてください。
コード: インスタンス化できない
抽象クラスは直接インスタンス化できません。ただし、すべてのサブクラスが継承する通常のメソッドを含めることはできます。
public class Main {
// Abstract class with one abstract method and one concrete method
static abstract class Animal {
abstract void speak(); // must be implemented by subclasses
void info() { // concrete method allowed
System.out.println("I am an animal.");
}
}
public static void main(String[] args) {
// Animal a = new Animal(); // Uncommenting would not compile: cannot instantiate abstract class
System.out.println("You cannot create an Animal directly if it is abstract.");
}
}
なぜ抽象クラスを使うのですか
抽象クラスを使うと、共通コードを1か所にまとめ、重要なメソッドを各サブクラスに実装させられます。一部の動作は共通しているものの、一部が具象型ごとに異なる場合に使用します。
コード: 抽象メソッドを実装する
サブクラスは抽象メソッドを実装する必要があります。抽象クラスの具象メソッドは継承され、再利用できます。
public class Main {
static abstract class Animal {
abstract void speak();
void info() {
System.out.println("I am an animal.");
}
}
static class Dog extends Animal {
// Must implement speak()
void speak() {
System.out.println("Woof!");
}
}
public static void main(String[] args) {
Dog d = new Dog(); // allowed: Dog is concrete
d.info(); // inherited concrete method
d.speak(); // Dog's implementation
}
}
ルールと組み合わせ
ルール: 抽象クラスには、フィールド、コンストラクター、具象メソッドを定義できます。サブクラスは、すべての抽象メソッドを実装して初めて具象クラスになります。実装しない場合、そのクラスも抽象クラスになります。
コード: 抽象クラスとポリモーフィズム
抽象クラスはポリモーフィズムと相性がよく、組み合わせて使えます。コードでは抽象型を利用し、各サブクラスが適切な動作を提供できます。
public class Main {
static abstract class Animal {
abstract void speak();
}
static class Dog extends Animal {
void speak() { System.out.println("Woof!"); }
}
static class Cat extends Animal {
void speak() { System.out.println("Meow!"); }
}
public static void main(String[] args) {
// Polymorphism through abstract base type
Animal[] pets = { new Dog(), new Cat() };
for (int i = 0; i < pets.length; i = i + 1) {
pets[i].speak(); // each subclass provides its own behavior
}
}
}
抽象クラスの確認
簡単な確認: 抽象クラスについて正しい説明はどれですか?
復習
復習: 抽象クラスを使うと、コードを共有しながら重要なメソッドの実装を要求できます。直接インスタンス化はできませんが、サブクラスが動作を完成させます。
よくある質問
「抽象クラス」レッスンは無料ですか?
はい。「抽象クラス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「抽象クラス」で何を学びますか?
抽象クラスと抽象メソッドを宣言し、インスタンス化できない理由を理解します。サブクラスが設計を完成させる方法も確認します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「抽象クラス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。