第7章 クラスの継承 (Java)

継承

  • extendsキーワードにより他のクラスを継承することができる。
  • 継承元をスーパークラス(親クラス)、継承先をサブクラス(子クラス)という。
  • サブクラスはスーパークラスのフィールドとメソッドを引き継ぐ。
  • サブクラスは、機能を追加してスーパークラスを拡張できる。

 

継承ツリー

  • 継承ツリーの中で子孫は、すべての先祖の機能を引き継ぐ。
  • 継承は、単一継承である。

 

継承されないもの

  1. オブジェクトの中に取り込まれないもの(classファイルの中にあるもの)
    • コンストラクタ
    • 静的メンバ(static修飾されたメンバ)——–クラス変数、クラスメソッド
  2. 制限があって化粧できないもの
    • final修飾されたクラス(例:Stringクラス)
    • privateアクセスのメンバ

 

 

Objectクラス

  • クラス宣言にextendsがなければ「extends Object」が挿入される。
  • Java言語のすべてのクラスは、Objectクラスのサブクラスである。

 

継承とデフォルトコンストラクタ

クラスにコンストラクタが定義していない時、コンパイラがデフォルトコンストラクタを暗黙の内に作成する。

———————デフォルトコンストラクタの形—————


public  コンストラクタ名(){

super();  //スーバークラスのコンストラクタを呼び出す。

}

————————————————————————–

 

自動的に挿入されるsuper();は引きスのないスーパーコンストラクタの呼び出しである。

デフォルトコンストラクタにsuper()が書かれるのは、自分のクラスでは特に初期化作業がなくても、スーパークラスの初期化を行わなければならないかれである。

 

コンストラクタの生成規則

Objectクラスを除くすべてのコンストラクタは、実行に先だってスーパークラスのコンストラクタを呼び出さなければならない。

 

明示的なスーパーコンストラクタの呼び出し

  • スーパークラスで引数のあるコンストラクタが定義されている時、サブクラスは引数を持つスーパークラスの呼び出しを書かなければならい。
  • super(—–)はコンストラクタの先頭行に書かなければならない。

 

アクセス修飾子

  1. public
    • すべてのクラスからアクセスできる。
  2. protected
    • 同じパッケージ内のクラスとサブクラスからアクセスできる。
  3. 指定なし(デフォルト)
    • 同じパッケージ内のクラスからアクセスできる。
  4. private
    • 同じクラス内からのみアクセスできる。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です