「基本-継承」の編集履歴(バックアップ)一覧はこちら

基本-継承」(2008/10/25 (土) 15:57:17) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*基本 クラス継承 既存のクラス(スーパークラス)から新しいクラス(サブクラス)を作成 スーパークラス+α=サブクラス 1.サブクラスの宣言 スーパークラスを拡張してサブクラスを宣言 サブクラスはスーパークラスのメンバを継承 class サブクラス名 extends スーパークラス名 { サブクラス追加フィールド サブクラスコンストラクタ サブクラス追加メソッド } 2.スーパークラスのコンストラクタ(初期化指定) -未指定の場合 サブクラスのオブジェクトが作成されたとき、サブクラスのコンストラクタ内の先頭で、スーパークラスの引数のないコンストラクタをコール。 -super() で指定 サブクラスのコンストラクタの先頭で super(a, b); のように記述するとスーパークラスの引数のあるコンストラクタをコール。 this()とsuper()はどちらもコンストラクタの先頭行に記述となるため、排他記述。 3.protected、super. -スーパークラスのprivateメンバには、サブクラスからアクセス不可 -スーパークラスのprotectedメンバには、サブクラスからアクセス可 -サブクラス内で super.スーパークラスのメソッド とするとスーパークラスのメソッドをコール -サブクラスからスーパークラスの同じ名前のメンバにアクセスする場合は、super.を付ける。 -関連:クラス内でインスタンス変数とローカル変数が重複する場合、this. をつけるとインスタンス変数、つけないとローカル変数。 4.メソッドのオーバーライド サブクラスでスーパークラスのメソッドをオーバーライド可 オーバーロードとの違いに注意。 5.スーパークラス変数とサブクラスオブジェクト こんな記述もできるのは良いけど、自分の中ではどっちかに統一して書いた方がいいよねぇ。 -サブクラス変数でオブジェクト SubAbc subabc1; subabc1 = new SubAbc(); -スーパークラス変数でオブジェクト Abc abc1; abc1 = new SubAbc(); オブジェクトをさす変数のクラスに関係なく、適切なメソッドをコール。 同様にスーパークラスの配列変数に対して、スーパークラスとサブクラスのオブジェクトを作成可。 6.final -メソッドに指定した場合、サブクラスでオーバーライド不可 -フィールドに指定した場合、値変更不可。この場合、フィールドは必ず初期化すること。定数となる。 -クラスに指定した場合、サブクラス拡張不可 7.interface 1つのスーパークラスから複数のサブクラス拡張生成可。 複数のスーパークラスから1つのサブクラスの生成は不可。=>interface 8.Objectクラス スーパークラスを指定しないクラスは、Objectクラスのサブクラスになる。 すなわち、すべてのクラスはObjectクラスを継承。 9.Objectクラスの主なメソッド -boolean equals(Object obj) :オブジェクトが引数と同じか判断 -Class getClass() :オブジェクトのクラスを返す -String toString() :オブジェクトのあらわす文字列を返す  
*基本 クラス継承 既存のクラス(スーパークラス)から新しいクラス(サブクラス)を作成 スーパークラス+α=サブクラス 1.サブクラスの宣言 スーパークラスを拡張してサブクラスを宣言 サブクラスはスーパークラスのメンバを継承 class サブクラス名 extends スーパークラス名 { サブクラス追加フィールド サブクラスコンストラクタ サブクラス追加メソッド } 2.スーパークラスのコンストラクタ(初期化指定) -未指定の場合 サブクラスのオブジェクトが作成されたとき、サブクラスのコンストラクタ内の先頭で、スーパークラスの引数のないコンストラクタをコール。 -super() で指定 サブクラスのコンストラクタの先頭で super(a, b); のように記述するとスーパークラスの引数のあるコンストラクタをコール。 this()とsuper()はどちらもコンストラクタの先頭行に記述となるため、排他記述。 3.protected、super. -スーパークラスのprivateメンバには、サブクラスからアクセス不可 -スーパークラスのprotectedメンバには、サブクラスからアクセス可 -サブクラス内で super.スーパークラスのメソッド とするとスーパークラスのメソッドをコール -サブクラスからスーパークラスの同じ名前のメンバにアクセスする場合は、super.を付ける。 -関連:クラス内でインスタンス変数とローカル変数が重複する場合、this. をつけるとインスタンス変数、つけないとローカル変数。 4.メソッドのオーバーライド サブクラスでスーパークラスのメソッドをオーバーライド可 オーバーロードとの違いに注意。 5.スーパークラス変数とサブクラスオブジェクト こんな記述もできるのは良いけど、自分の中ではどっちかに統一して書いた方がいいよねぇ。 -サブクラス変数でオブジェクト SubAbc subabc1; subabc1 = new SubAbc(); -スーパークラス変数でオブジェクト Abc abc1; abc1 = new SubAbc(); オブジェクトをさす変数のクラスに関係なく、適切なメソッドをコール。 同様にスーパークラスの配列変数に対して、スーパークラスとサブクラスのオブジェクトを作成可。 6.final -メソッドに指定した場合、サブクラスでオーバーライド不可 -フィールドに指定した場合、値変更不可。この場合、フィールドは必ず初期化すること。定数となる。 -クラスに指定した場合、サブクラス拡張不可 7.interface 1つのスーパークラスから複数のサブクラス拡張生成可。 複数のスーパークラスから1つのサブクラスの生成は不可。=>[[interface>基本-インターフェイス]] 8.Objectクラス スーパークラスを指定しないクラスは、Objectクラスのサブクラスになる。 すなわち、すべてのクラスはObjectクラスを継承。 9.Objectクラスの主なメソッド -boolean equals(Object obj) :オブジェクトが引数と同じか判断 -Class getClass() :オブジェクトのクラスを返す -String toString() :オブジェクトのあらわす文字列を返す  

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー