Java 継承のサンプル

Javaの継承のサンプルです。

目次

継承のサンプル

クラスを継承するサンプルです。
11行目は、Color2クラスがextendsを使用して3行目のColor1クラスを継承しています。
4行目と12行目のメソッド名(getName1)は同じ名前です。オーバーライドといいます。
→23行目は、Color2クラスの12行目のgetName1メソッドを実行します。
→オーバーライドの機能で処理内容を上書きしています。
24行目は、Color1クラスの7行目のメソッドを実行します。
→Color2クラスは、getName2メソッドを再実装しないで済んでいます。継承の利点です。

package test1;

class Color1 {
	public String getName1() {
		return "赤";
	}
	public String getName2() {
		return "黄";
	}
}
class Color2 extends Color1{
	public String getName1() {
		return "青";
	}
}
public class Test1 {
	public static void main(String[] args) {
		
		Color1 c1 = new Color1();
		System.out.println(c1.getName1()); //赤
		
		Color2 c2 = new Color2();
		System.out.println(c2.getName1()); //青
		System.out.println(c2.getName2()); //黄
	}
}

継承元のクラスのコンストラクタに値を渡すサンプル

継承元のクラスのコンストラクタに値を渡すサンプルです。
20行目でインスタンスが生成されるときに11行目のコンストラクタが呼ばれた後、12行目で5行目の継承元のコンストラクタを呼び出します。
継承元のクラスのコンストラクタを呼ぶときは、superを使用します。

package test1;

class Color1 {
	
	Color1(String a) {
		System.out.println("指定した色は" + a + "です");;
	}
}
class Color2 extends Color1{

	Color2(String b) {
		super(b);
	}
}
public class Test1 {
	public static void main(String[] args) {
		
		Color1 c1 = new Color1("赤");//指定した色は赤です

		Color2 c2 = new Color2("青");//指定した色は青です
	}
}

11-13行目をコメントにした場合

11-13行目をコメントにするとコンパイルエラーになります。
以下のエラーメッセージが出ます。
「暗黙的スーパー・コンストラクターColor1()は、デフォルト・コンストラクターについては未定義です。明示的コンストラクターを定義する必要があります」
コンストラクタは派生クラスに継承されないためです。
→メソッドは、継承元のクラス(Color1クラス)のみにあったとしても継承されるのでコンパイルエラーになりません。

package test1;

class Color1 {
	
	Color1(String a) {
		System.out.println("指定した色は" + a + "です");;
	}
}
class Color2 extends Color1{

//	Color2(String b) {
//		super(b);
//	}
}
public class Test1 {
	public static void main(String[] args) {
		
		Color1 c1 = new Color1("赤");//指定した色は赤です

//		Color2 c2 = new Color2("青");//指定した色は青です
	}
}

上記コードにデフォルトコンストラクタを追加した場合

上記コードにデフォルトコンストラクタを追加すると、コンパイルエラーは出なくなります。
以下のコード2の5,6行目がデフォルトコンストラクタです。
→コード2の12行目にコード1のデフォルトコンストラクタが暗黙的にあることになります。

コード1

	Color2() {
		super();
	}

コード2

package test1;

class Color1 {
	
	Color1() {
	}
	Color1(String a) {
		System.out.println("指定した色は" + a + "です");;
	}
}
class Color2 extends Color1{

//	Color2(String b) {
//		super(b);
//	}
}
public class Test1 {
	public static void main(String[] args) {
		
		Color1 c1 = new Color1("赤");//指定した色は赤です

//		Color2 c2 = new Color2("青");//指定した色は青です
	}
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java メンバー変数とローカル変数
Java クラス型の型変換とキャストのサンプル
Java instanceof演算子のサンプル
Java thisのサンプル
Java インターフェースのサンプル
Java abstract修飾子のサンプル
Java シングルトンのサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル




△上に戻る