Java-継承
継承(inheritance)について
継承とは、あるクラスの実装を土台にして、別のクラスを実装するための方法です。
元になるクラスをスーパークラスと呼び、それを継承する新しいクラスをサブクラス(継承クラス)と呼びます。
スーパークラスの機能(フィールドやメソッドなど)をサブクラスに持たせることが可能となります。
クラスを継承させるメリット
- クラス間の関係をプログラムとして表現できる。
- プログラムを再利用しやすくなる。
- 機能拡張しやすくなる
javaにおける継承の方法
既存のクラスから派生したクラスを作成したい場合には「extends」キーワードを記述します。
extendとは「延ばす、広げる、拡張する」という意味です。
なお、Javaでは多重継承はできません。
class サブクラス extends スーパークラス {
// 内容
}
サンプル
// Inheritance.java
// スーパークラス
class SuperClass
{
int data;
void printData()
{
System.out.println( data );
}
}
// 継承(サブ)クラス
class SubClass extends SuperClass
{
int dataSub;
void printDataSub()
{
System.out.println( dataSub );
// スーパークラスのフィールドを出力。
System.out.println( data );
}
}
class Inheritance
{
public static void main( String[] args )
{
SubClass ref = new SubClass();
// スーパークラスのメソッドを実行する
ref.data = 100;
ref.printData();
// サブクラスのメソッドを実行する
ref.dataSub = 200;
ref.printDataSub();
}
}
thisとsuper
変数やメソッドがスパークラスメンバかサブクラスメンバかを区別します。
- thisキーワードは現在のオブジェクト
- superキーワードはスーパークラスのオブジェクト
コンストラクタの呼び出し
クラス内に複数のコンストラクタがある場合、thisキーワードをしようすることで別コンストラクタを呼び出せます。
明示的にスーパークラスのコンストラクタを呼び出す場合、superキーワードを使用します。
class Parent {
Parent( int a, int b ){
}
}
class Child {
Child(){
this( 0, 0 );
super( 1, 1 )
}
Child( int a, int b ){
}
}