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)