>  > Project μ プロジェクトミュー ブレーキパッド RACING999 リア インプレッサ GC8

Project μ プロジェクトミュー ブレーキパッド RACING999 リア インプレッサ GC8

継承とは、クラスの要素(メンバ変数やメソッド)を自身に作成するのではなく、別のクラスから取り込む事ができる仕組みです。


Project μ プロジェクトミュー ブレーキパッド RACING999 EXMTGDR12.5XMT1 リア インプレッサ サマータイヤ GC8

例として、「Aクラス」を継承したものを「Bクラス」とすると、「Bクラス」は次の図のような特性を持つことになります。

※但し、「Aクラス」の要素で「アクセス装飾子」が「private」のもの、および「コンストラクタ」は引き継ぐ事が出来ません。


ちなみにクラスの継承関係をUMLで表記すると次のようになります。

Project μ プロジェクトミュー ブレーキパッド RACING999 リア インプレッサ GC8,[#tong##]

■メーカーProject μ/プロジェクト・ミュー■商品名ブレーキパッド■タイプRACING(レーシング)■シリーズRACING999■F/Rリア■メーカー品番R910■自動車メーカー名SUBARU■車名インプレッサ■E/G(CC)1500~2000■年式92.11~96.8■型式GC8■備考■商品説明GTレースでの実践テストにより開発された絶対的な効きと耐フェード性を備えるモデル。【材質】スーパーグラファイトメタリック(Super graphite metallic)【温度域】200~800℃【摩擦係数】0.42~0.59μ ■納期メーカー取り寄せ品の為、通常2~4営業日以内に発送致します。※ ご注文前に必ずご確認下さいお急ぎの場合はご購入前に納期確認をお願い致します。納期について*メーカー在庫が欠品の場合、1~2ヶ月以上のお時間を頂く場合がございます。*メーカーにて予告無く廃盤、仕様変更になっている場合があります。返品・キャンセルに関して*お客様都合による返品・キャンセル・商品の変更は一切お受けしておりません。*在庫・納期・適合未確認でご購入された商品のキャンセルは一切お受けしておりません。メーカー希望小売価格はメーカーサイトに基づいて掲載しています。

このとき、「Bクラス」からみて「Aクラス」のことを「親クラス」または「スーパークラス」と呼び、反対に「Aクラス」からみて「Bクラス」の事を「子クラス」または「サブクラス」と呼びます 【割引クーポン配布中】ENDLESS/エンドレス MX72 カリーナ AT210 H10.8~H13.12 フロント 商品番号:EP278。


インプレッサ リア ブレーキパッド インプレッサ プロジェクトミュー GC8 RACING999 RACING999 Project μ

継承の書式は次の通りです。

class 子クラス名 extends 親クラス名{
}
 

※C++などでは「親クラス」を複数指定することが出来ますが、Javaでは「親クラス」は1つしか指定する事が出来ません(単一継承)。


「子クラス」から「親クラス」へのアクセス

「子クラス」から「親クラス」の「メンバ変数」や「メソッド」を使用するには次のように記述します。

class 子クラス名 extends 親クラス名{
 super.親クラスのメンバ変数;
 super.親クラスのメソッド;
}
 

「super.」は省略可。
但し、子クラスに親クラスと同じ名前のメンバ変数やメソッドがある場合は、明示的に「super.」を付加しないと自クラス(子クラス)のものが使用されます。


「親クラス」から「子クラス」へのアクセスは用意されていません。

「子クラス」はその宣言時に「親クラス」を指定しているので「親クラス」へアクセス出来ます スタンドフック&チェーンガード スタンドフック/チタン チェーンガード/レッド AGRAS(アグラス) CBR250RR(17年)。しかし、「親クラス」はどのクラスに継承されるか解らないのでアクセスしようがありません。当然、アクセス方法は用意されていません。

ちなみに上記クラス図で「子クラス」から「親クラス」へ「△」の記号で指していますが、これはこういった意味からきています。 つまり「子クラス」は「親クラス」を示せるが、「親クラス」は「子クラス」を示す事ができないということです。


コンストラクタの呼び出し規則

「親クラス」と「子クラス」のコンストラクタは次の規則で呼び出されます。

  1. 「子クラス」のインスタンス生成時、まず「親クラス」のコンストラクタが呼ばれ、その後「子クラス」のコンストラクタが呼ばれる。
  2. 「親クラス」の呼ばれるコンストラクタは、引数がない「コンストラクタ名()」が呼び出される。
    もし、「親クラス」に引数があるコンストラクタしかない場合は、「親クラス」に引数なしのコンストラクタを作成して、そこから引数有りのコンストラクタを呼び出すようにするか、または「子クラス」から「super(引数リスト);」で明示的に呼び出す必要があります。

    実際に継承の動作を次のサンプルで確認します。


    ・サンプルソース(Sample0801.java)

    class Parent0801 {
     public String ps1="親クラスのメンバ変数が参照されました。";
     public Parent0801(){
     System.out.println("親クラスのコンストラクタ(引数なし)が呼ばれました。"); 
     }
     public void pm() {
     System.out.println("親クラスのメソッドが呼ばれました。");
     }
    }
    class Child0801 extends Parent0801 { // Parentクラス(親クラス)を継承。
     public String cs1="子クラスのメンバ変数が参照されました。";
     public Child0801(){
     System.out.println("自クラスのコンストラクタ(引数なし)が呼ばれました。");
     }
     public void cm() {
     System.out.println("子クラスのメソッドが呼ばれました。");
     }
    }
    public class Sample0801 {
     public static void main(String[] args) {
     Child0801 child = new Child0801(); // 子クラスのインスタンスを生成。
     System.out.println(child.ps1); // 親クラスのメンバ変数を参照。
     System.out.println(child.cs1); // 子クラスのメンバ変数を参照。
     child.pm(); // 親クラスのメソッドの呼び出し。
     child.cm(); // 子クラスのメソッドの呼び出し Brembo ブレンボ ブレーキパッド(単品) フロント セラミック TOYOTA ラクティス 型式NCP120 年式10/11~14/04 品番P83 101N。
     }
    }
     

    ・実行結果

    C:\dev\java>java Sample0801 [Enter]
    親クラスのコンストラクタ(引数なし)が呼ばれました。 ← 子クラスのインスタンス生成時に親クラスのコンストラクタが先に呼ばれる。
    自クラスのコンストラクタ(引数なし)が呼ばれました。
    親クラスのメンバ変数が参照されました。 ← 子クラスから親クラスのメンバ変数を参照できている。
    子クラスのメンバ変数が参照されました。
    親クラスのメソッドが呼ばれました。 ← 子クラスから親クラスのメソッドを呼び出せている。
    子クラスのメソッドが呼ばれました。
     
     

    ▲PageTop

    オーバーライド

    「親クラス」に存在するメソッドと同じシグニチャのメソッドを作成する事が出来ます。

    これを「オーバーライド」といい、ちょうど「親クラス」のメソッドが「子クラス」で書き換えられたような感じになります。オーバーライドされた「親クラス」のメソッドを呼び出したいときは「super.」を付加し「親クラス」を明示することで呼び出し可能です。


    ※よく似た呼び名で「オーバーロード」がありますが別物ですので注意してください。


    ・サンプルソース(Sample0802.java)

    class Parent0802 {
     public void same(){
     System.out.println("親クラスのsameメソッドが呼ばれました。");
     }
    }
    class Child0802 extends Parent0802 {
     public void same(){
     System.out.println("自クラスのsameメソッドが呼ばれました。");
     }
     public void calltest() {
     same();
     super.same();
     }
    }
    public class Sample0802 {
     public static void main(String[] args) {
     Child0802 child = new Child0802();
     child.calltest();
     }
    }

    ・実行結果

    C:\dev\java>java Sample0802 [Enter]
    自クラスのsameメソッドが呼ばれました。
    親クラスのsameメソッドが呼ばれました。
     
     

    修飾子の表示レベル

    オーバーライドを行うとき、アクセス修飾子の制限レベルを上げることはできません。

    アクセス修飾子の制限レベルの強度は次のようになります。

    制限が弱い← public < protected < デフォルト(省略時) < private →制限が強い
     

    ※アクセス修飾子の詳細はこちらの「 Project μ プロジェクトミュー ブレーキパッド RACING999 リア レガシィB4 BL5(TURBO) アクセス修飾子」を参照してください。


    従って、例えば親クラスのアクセス修飾子が「protected」のものをオーバーライド時に、修飾子を省略したり「private」に変更することはできません。

    ▲PageTop

    継承とコンポジション

    別のクラスの要素を利用できる方法として、「継承」の他に「コンポジション」(集約)があります。

    「コンポジション」はメンバ変数として別のクラスを取り込んだ形です。


    クラス設計において、「継承」と「コンポジション」の使い分けは次の関係で判断します。


    1.「継承」の関係

    「継承」は「A is a B」のとき、つまり「AはBである」といえる場合に使用します。

    例えば、「人間クラス」と「プログラマークラス」があった場合、「プログラマーは人間である」といえるので「継承」関係にすることが出来ます。これを「Is-a」関係と呼びます 【T241】bB [H20/10-H23/11][QNC20 / QNC21 / QNC25] カジュアルエスライン ホワイト Bellezza ベレッツァ シートカバー。


    2.「コンポジション」の関係

    「コンポジション」は「A has a B」のとき、つまり「AはBをもっている」といえる場合に使用します 。

    例えば、「プログラマークラス」と「パソコンクラス」があった場合、「プログラマーはパソコンをもっている」といえるので「コンポジション」関係にすることが出来ます。これを「has-a」関係と呼びます。


    ・サンプルソース(Sample0803.java)

    class Human0803 {
     public void think(){
     System.out.println("考えています・・・。");
     }
    }
    class Computer0803 {
     public void process(){
     System.out.println("処理をしています・・・。");
     }
    }
    class Programmer803 extends Human0803 {
     public Computer0803 comp = new Computer0803();
    }
    public class Sample0803 {
     public static void main(String[] args) {
     Programmer803 pg = new Programmer803();
     pg.think();
     pg.comp.process();
     }
    }

    ・実行結果

    C:\dev\java>java Sample0803 [Enter]
    考えています・・・。
    処理をしています・・・ プロジェクトμ タイプHC-CS リア左右セット ブレーキパッド ブルーバード PU13 R214 取付セット プロジェクトミュー プロミュー プロμ TYPE HC-CS ブレーキパット【店頭受取対応商品】。

    Project μ プロジェクトミュー ブレーキパッド RACING999 リア インプレッサ GC8

    レガシィワゴン BG3,5,7,9(NA) KBマフラーシリーズ KB-W・BURST(ケービー・ダブルバースト) 【オールステン/片出し】 K-BREAK/ケイブレイク REAL STEERING オリジナルシリーズ スバル BRZ 後期 ZC6用 カラー:オールレザー (GR-LPB-RD)【ハンドル】レアル ステアリング▲PageTop

    {yahoojp} {itsenka.com}
{yahoojp}jpprem01-zenjp40-wl-zd-6094