Java初心者が理解に苦戦しがちなExtends(継承)。サンプルを交えて、わかりやすく解説します。
Javaの継承とは?
継承とは、他のクラスのメソッドやメンバ変数を、そのままコピー(extends : 継承)して使える機能です。
継承の方法
継承したいクラスを「extends」で指定します。具体的には、以下のようなイメージ。
public class クラス名 extends 継承するクラス名
サンプル
継承元クラス(Sample1.java)
このSample1クラスは、Sample2クラスを継承(extends)しています。
Sample2クラスを継承することで、Sample1クラスの中身に何も書かずとも、Sample2クラスのメンバ変数やメソッドを全部使うことができます。
public class Sample1 extends Sample2{ // Sample2を継承するだけなので、中身は空 }
継承されるクラス(Sample2.java)
これは継承されるクラス「Sample2」です。
メンバ変数 num と、変数のセッター、ゲッターメソッドが付属しているよくあるタイプのクラスです。
public class Sample2{ public int num = 0; public int getNum(){ return num; } public void setNum(int set_num){ num = set_num; } }
呼び出し元クラス(Main.java)
こちらがmainメソッドのある呼び出し元クラスです。
Sample1しかインスタンス化していませんが、継承しているため、Sample2のメソッドを使うことができます。
public class Main{ public static void main(String[] args){ // Sample2をextends(継承)したSample1をインスタンス化 Sample1 s1 = new Sample1(); // Sample2を継承しているので、Sample2に書かれていたgetNumメソッドが使える int num = s1.getNum(); System.out.println(num); s1.setNum(2); int num2 = s1.getNum(); System.out.println(num2); } }
実行結果
以下のように、printlnの結果が2行出ていますね。 1行目は、何もセットしていないので、デフォルトの0が、2行目は、setNumメソッドで2をセットしたので、2が表示されています。
PS C:\Users\Public\Documents\java\Extends> java Main 0 2
注意点:複数クラスの継承はできません
extendsでは、複数クラスの継承はできないのが注意点です。
extendsには、一つのクラスだけを記載するようにして下さい。