【Java】クラスの継承とは - 意味や使い方を解説
- 作成日:2022/01/20
- 更新日:2022/02/06
Javaの継承について解説します。
クラス継承とは
クラスの継承とは、クラスの機能を別のクラスに引き継ぐことです。 「extends」というキーワードを使って継承します。
13行目がクラスの継承です。RunnerクラスがHumanクラスを継承しています。
//クラスの宣言
class Human{
String name;
public void sleep(){
System.out.println("寝ました");
};
}
//Humanクラスを継承
class Runner extends Human{
int rank;
void run(){
System.out.println("早く走りました");
};
}
クラスを継承すると継承元となったクラスのメンバー変数やメソッドを使えるようになります。 この例だとname変数やsleepメソッドを使えます。
例えば、次のように実行してみます。
//実行
public class App{
public static void main(String[] args) {
Runner ken = new Runner();
//Runnerクラスの変数やメソッドを使える
ken.run();
ken.rank=10;
//Humanクラスの変数やメソッドも使える
ken.sleep();
ken.name="KEN-HIRUTON";
}
}
7行目でRunnerクラスのインスタンスを生成しているので、 当然ながらRunnnerクラスの変数やメソッドは使えます(10,11行目)。
さらに、RunnnerクラスはHumanクラスを継承しているのでHumanクラスの変数やメソッドも使えます(14,15行目)。
Humanクラスをnewしなくても、継承を使えばRunnnerクラスをnewするだけでOKです。
継承元のクラス(この例だとHumanクラス)をスーパークラスまたは親クラスといい、 継承先のクラス(この例だとRunnerクラス)をサブクラスまたは子クラスといいます。
extendsの省略
extendsを省略すると暗黙的にObjectクラスを継承することになります。 以下のような2つのクラスがあるとします。
//クラスの宣言
class Human{
int a;
}
//Humanクラスを継承
class Runner extends Human{
int b;
}
Humanクラスは何も継承していませんが、暗黙的にObjectクラスを継承していることになります。 HumanクラスがObjectクラスを継承しているので、 Humanクラスを継承したRunnerクラスも、Objectクラスを継承していることになります。
この例からわかるように、全てのクラスはObjectクラスから派生したクラスとなるのです。
使い道
クラス継承をするメリットは構文の簡略化です。
例えば、陸上選手、サッカー選手、バレー選手・・のようにスポーツ選手を表すクラスを書くとします。 これらは全て人間なので、名前・年齢といった変数や、食べる・寝るといったメソッドも必要となるとしましょう。
ですが、全てのクラスにこれらの情報を書くのは手間なので、継承を活用します。 人間クラスを用意して、名前、年齢、食べる、寝るといった共通の情報はここに書きます。
そうすれば、陸上選手クラスは走る情報だけ、サッカー選手クラスはサッカーの情報ことだけを書いて、 あとは人間クラスを継承すれば、名前、年齢、食べる、寝るといった情報も持てることになります。
複数のクラスを継承できない
Javaでは複数のクラスを継承することはできません。 ですが、インターフェースならば複数継承することができます。
インターフェースについては以下で解説しています。
以上、継承についてでした。