Java多重化クラス

1541 ワード

一、クラスを多重化する目的
既存のプログラムコードを破壊せずにクラスを使用します.
二、クラスを多重化する方式
1.組み合わせ
2.「is-a」(は1つ)を継承する関係は継承で表される.
「has-a」(ある)の関係は組合せで表現される.
三、継承
継承では、コンストラクション・プロシージャがベース・クラスから「外側」に拡散するため、ベース・クラスはサブクラス・コンストラクタがアクセスできる前に初期化が完了します.
デフォルトのコンストラクタがない場合、またはサブクラスがベースクラスのパラメータ付きコンストラクタを明示的に呼び出したい場合は、キーsuperを使用してベースクラスのパラメータ付きコンストラクタを明示的に記述する必要があります.ベースクラスを呼び出すコンストラクタコードは、サブクラスコンストラクタの最初の行を記述する必要があります.
オブジェクト向けプログラミングでは,継承を慎むべきである.
継承を使用する必要がある場合、新しいクラスからベースクラスへのアップグレードが必要かどうかを判断できます.もし上へ転換しなければならないならば、継承は必要です.必要でない場合は、継承する必要があるかどうかをよく考えます.次の例では、継承を含む初期化の全プロセスを理解します.
class Insect {
    private int i = 9;
    protected int j;
    public Insect() {
        System.out.println("i="+i+" j="+j);
        this.j = 11;
    }
    private static int init1 = printInit("static Insect init1 initialzed");
    static int printInit(String str){
        System.out.println(str);
        return 33;
    }
}

public class Beetle extends Insect {
    private int a = printInit("Beetle a initialzed");
    public Beetle() {
        System.out.println("a="+a);
        System.out.println("j="+j);
    }
    private static int init2 = printInit("static Beetle init2 initialzed");
    public static void main(String[] args) {
        System.out.println("main method....");
        Beetle b = new Beetle();
    }
}
結果:
static Insect init1 initialzed
static Beetle init2 initialzed
main method....
i=9 j=0
Beetle a initialzed
a=33
j=11