Java クラスの継承のサンプル

Javaのクラスの継承のサンプルです。

目次

クラスの継承の概念

クラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。

継承元のクラスのことを「基底クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。

継承

class  クラス名  extends  継承元のクラス名{
}
  • 継承先のクラスは、「extends」の後ろに継承元のクラス名を記述します。
  • 継承元のクラス(親クラス)は、1つのみ指定できます。
  • 継承したクラスをさらに継承することはできます。
  • extendsを省略した場合、Objectクラスを継承していることになります。
  • Javaのすべてのクラスは、Objectクラスを継承しています。
    →equalsメソッドなどのObjectクラスのメソッドを使用できます。
  • 以下は、OracleのJava8のObjectクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html

コード

クラスの継承のサンプルです。

package test1;

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

3~7行目は、基底クラスです。
8~12行目は、派生クラスです。
8行目は、Color2クラスがextendsを使用して3行目のColor1クラスを継承しています。
17行目は、4行目の基底クラスのメソッドを実行します。
→Color2クラスは、基底クラスのメソッドを再実装しないで済んでいます。継承の利点です。

 

親クラスのインスタンスを指定する(super)

親クラスのインスタンスを指定するサンプルです。
superキーワードを指定します。

package test1;

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

8行目のクラスは、3行目のクラスを継承しています。
10行目は、superを使用して4行目の親クラスのメソッドを指定しています。

 

継承を禁止する(final)

継承を禁止するサンプルです。
finalを使用します。

package test1;

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

3行目は、final修飾子がついています。
8行目のクラスは、3行目のクラスを継承できません。コンパイルエラーになります。

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java オーバーライドのサンプル
Java インターフェースのサンプル(interface)
Java 抽象メソッドと抽象クラスのサンプル(abstract)

△上に戻る