LoginSignup
1
0

【Java】抽象クラスの継承を覚える

Last updated at Posted at 2024-06-13

通常のクラスの継承に対して、抽象クラスの継承は何が違うのか、覚えるための自分用メモです。

抽象クラスとは?

抽象クラスでは、一部のメソッドを抽象メソッド(abstract)として記述することで、継承したサブクラスでのオーバーライド(実装)を強制します。

サンプルプログラム

例えば、以下のクラスをSubClass1クラスに継承するとします。

SuperClass.java
public abstract class SuperClass {
    private String name;
    public SuperClass(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public abstract int methodA();
}

以下のようにオーバーライドすれば問題ありませんが、オーバーライドしなかった場合はコンパイルエラーになります。

SubClass1.java
public class SubClass1 extends SuperClass {
    public SubClass1(String name) {
        super(name);
    }
    public int methodA() {
        return 1;
    }
}

また、抽象クラスは直接インスタンス化できないので、単体では使えない「継承のためのクラス」と言えますね。

継承したサブクラスをインスタンス化する

抽象クラスを継承したサブクラスをインスタンス化する記述は、通常のインスタンス化と変わりません。

Main.java
public class Main {
    public static void main(String[] args) {
        SuperClass s = new SubClass1("名前1");
    }
}

オーバーライドしたメソッドを呼び出す

オーバーライドした抽象メソッドは、通常のメソッドと同様に呼び出すことができます。

Main.java
public class Main {
    public static void main(String[] args) {
        SuperClass s = new SubClass1("名前1");
        print(s);
    }
    static void print(SuperClass s) {
        System.out.println(s.getName());
        System.out.println(s.methodA());
    }
}

実行結果
名前1
1

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0