今すぐ分かる!Javaで書くクラスの継承【初心者向け】

初心者向けにJavaで書く継承の使い方について解説。継承とは何なのかや、継承の書き方から実際に書いてみたサンプルを紹介しながら説明しています。Javaエンジニアを目指している人は今のうちに覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回はJavaの継承について説明します。

Javaを使った作業において重要な知識で、現場でも役立つのでぜひ覚えておきましょう。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説している記事をまずご覧ください。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

なお、今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

田島悠介

今回はクラスの継承について学習するよ。

大石ゆかり

田島メンター!!継承っていうのは何をするんですか~?

田島悠介

継承はオブジェクト指向の特徴のひとつで、クラスを構成しているメンバ(フィールドやメソッド)を他のクラスに受け継がせることができるんだ。実際の例も踏まえて見てみよう。

大石ゆかり

はい!

 

継承とは

継承によって、何か新しく機能を作る際に前に作った機能と同じ機能がある場合に、共通部分は一つにまとめて繰り返し利用できるようになります。つまり、何度も同じようなプログラムを書く必要がなく、作業の効率化、ソースコード全体を見やすくさせることができます。

 

継承の書き方

例えば次のようなクラスがあるとしましょう。

public class Student{
  String name;
  int id;
  attend(){}
}

このようなクラスを「schoolクラス」で継承するとします。 クラスを継承するときはクラス名の後ろに「extends クラス名」を付けて完成です。

public class School extends Student{
  test(){}
}

これで「Studentクラス」を継承した「Schoolクラス」が完成しました。

継承元である「Studentクラス」を親クラスという風に呼びます。 もちろん継承しているので、「Schoolクラス」は「Studentクラス」と同様に「name」、「id」を持ちます。

継承なしで書くならば、以下のように書きます。

public class School{
  String name;
  int id;
  attend(){}
  test(){}
}

コピペした形です。 コピペをすればいというわけではありません。

そのまま継承するために、元の「Studentクラス」を変更すれば継承先の「Schoolクラス」まで変更が反映されるという便利な方法です。

しかし、これはコピーのみの機能ではありません。 継承とは「Studentクラス」を継承した「Schoolクラス」を作ったわけです。 という事は「Schoolクラス」は「Studentクラス」を継承しているわけです。

それによって「Schoolクラス」を「Studentクラス」とみなすことができるわけです。

上記を踏まえると、以下のようなコーディングが実現します。

Student japanese = new Schoo();

上記のコーディングが表しているのは「Schoolクラス」を「Studentクラス」として扱っていいという事です。

 

田島悠介

継承を行ったとき、元のクラスを「スーパークラス」、引き継いだクラスを「サブクラス」と言うよ。

大石ゆかり

メンバの継承は全部が行われるんですか?

田島悠介

必ず全てが行われるわけではなくて、例えばprivate修飾子を使うと継承しないという風に制御することも可能になっているんだ。

大石ゆかり

なるほど、色々な使い方ができるんですね。

 

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

以下のコードを書いてみましょう。 作成するファイルは2つです。 「student.java」と「school.java」です。

student.java

public class Student{
  String name;
  int id;
}

school.java

public class School extends Student {
  String subject;
    public static void main(String[] args){
      Student japanese = new School();
      japanese.id = 100;
      System.out.println(japanese.id);
    }
}

実行結果

100

実行できましたか。 継承の機能としてはコピペだけでなく、もともとのクラスとしても使えます。 それ故に継承という考え方はとても便利です。

 

しかし、注意をしなければならないことがあります。 それはむやみに継承をしないという事です。 クラス設計において、便利だからと関係のないクラスを継承してしまうと、プログラムとしては成立しても読みにくいコードになってしまう可能性があります。

また、継承元として選べるクラスは1つだけです。2つのクラスを同時に継承することはできないようになっています。 親クラスは1つだけというのを覚えておきましょう。 継承にはまだまだ細かいルールが存在していますが、継承という操作は大変便利です。

 

田島悠介

スーパークラスのメソッドをサブクラスで上書きすることもできるんだ。これをオーバーライドというよ。

大石ゆかり

さっきのprivate修飾子もそうですが、色んな操作が可能になっているんですね。

田島悠介

継承に関する修飾子は他にもいくつかあるけれど、まずはそのまま継承する方法を覚えておこう。

大石ゆかり

実際に書いて練習してみます。ありがとうございました!

 

また、Javaの学習サイトもまとめているので、合わせてご覧ください。

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。