Java多重化クラス
1541 ワード
一、クラスを多重化する目的
既存のプログラムコードを破壊せずにクラスを使用します.
二、クラスを多重化する方式
1.組み合わせ
2.「is-a」(は1つ)を継承する関係は継承で表される.
「has-a」(ある)の関係は組合せで表現される.
三、継承
継承では、コンストラクション・プロシージャがベース・クラスから「外側」に拡散するため、ベース・クラスはサブクラス・コンストラクタがアクセスできる前に初期化が完了します.
デフォルトのコンストラクタがない場合、またはサブクラスがベースクラスのパラメータ付きコンストラクタを明示的に呼び出したい場合は、キーsuperを使用してベースクラスのパラメータ付きコンストラクタを明示的に記述する必要があります.ベースクラスを呼び出すコンストラクタコードは、サブクラスコンストラクタの最初の行を記述する必要があります.
オブジェクト向けプログラミングでは,継承を慎むべきである.
継承を使用する必要がある場合、新しいクラスからベースクラスへのアップグレードが必要かどうかを判断できます.もし上へ転換しなければならないならば、継承は必要です.必要でない場合は、継承する必要があるかどうかをよく考えます.次の例では、継承を含む初期化の全プロセスを理解します.
既存のプログラムコードを破壊せずにクラスを使用します.
二、クラスを多重化する方式
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