' P '

whatever I will forget

Java abstractクラス

基本的にはC++と同じか。(C++は多重継承ができるけどJavaはできません)

ルール

  • abstract関数を含むクラスはabstractとして宣言しないといけない
  • abstract関数は処理を実装しない
  • クラスがabstractの場合、インスタンス化はできない
  • abstractクラスを使用する場合、他のクラスから継承しないといけない
  • abstractクラスを作ったら、他Concreteクラスから継承させ、そのクラスをインスタンス化させる
  • 継承クラス側で継承元のabstractメソッドに実処理を記載する
  • 基本的には継承側クラスで継承元のabstractメソッドに実処理を記載するが、全てのabstractメソッドを具体化しない場合には、その継承クラスもabstractクラスとなる

できること

  • abstractクラスには中身のあるメンバ変数やコンストラクタ、メソッドを実装することができる
  • interfaceは複数実装させることができる
  • abstractクラス自身は複数のConcreteクラスで継承することができる

どういう時にabstractクラスを使う?

  • 継承させるサブクラスがabstractのベースクラスと関連性が高い場合

よく比べられるInterfaceは?

  • interfaceを使用するクラスたちはあまり関連が無い場合が多い
abstract class Test1 {  //abstract class
    int legs = 0;
    abstract void print();  //abstract method
}

class Test2 extends Test1 {
    public void print() {
        System.out.println("Test");
    }
}

public class program {
    public static void main(String[] args) {
        Test2 t = new Test2();
        t.print();
    }
}