1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Java入門】超簡単!ゲームの職種で覚えるクラスの継承

Pocket

今回のテーマは、クラスの継承についてです。
初心者にとって、継承と聞くだけでも、なんのことだかさっぱりわからない人がほとんどです。
ですが、この継承をゲームの職種に置き換えると、ものすごい理解しやすくなります。
大元は、人間で、ゲームの職種は魔法使いや、ヒーラー、アタッカーと様々なタイプのものが存在します。
この人間とゲームの職種の関係を、継承と言います。

継承とは何か?

人がいて、職種があってそういう関係

職種が存在する前提条件として人がいます。
まさかあなたは、犬が魔法使いになれるとは思っていないことでしょう。
この人と職種の関係を継承といい、継承には必ず以下のことが成立します。
魔法使いは人間だ
ヒーラーは人間だ
アタッカーは人間だ
前半の職種を子といい、後半の人間は親といいます。

では、何故継承は使われるのでしょうか。

何故継承は使われるのか?

共通事項をまとめるため

継承をする前に、上記のプログラミングを見てください。
これは、魔法使いとヒーラーをセットしようとしているプログラミングです。
ですが、何か見にくいと思いませんか?
赤枠で囲ってあるname、hpとmp、statusメソッドが内容は違うけれど、使っている変数やメソッドは同じです。
これをどうにかするために、継承が使われます。
変数は同じ、内容が違うと分かれば、ほとんどの場合継承を使うとうまくいきます。

それでは、このプログラミングをあなたの手で分かりやすく直していきましょう。

使ってみよう!クラスの継承4STEP

親のクラスを作ってみよう

この上記のプログラミングには、親が存在しないので、新たに作ってやります。
この場合は、Humanクラスとしましょう。
Humanクラスには、赤枠で共通している部分を全部持ってきます。

継承させたいクラスにextendsをつける

それでは、魔法使いクラスとヒーラークラスは、Humanクラスを継承するものとします。
継承したい場合には、class 子クラス extends 親クラスという形式になります。
覚えておきましょう。

子クラスの内容を親クラスから使って内容を変えよう

このままでは、便宜上あまりよろしくないので、内容をちょっとだけ変えます。
extendsをつけた瞬間、魔法クラスとヒーラークラスは、親元のHumanクラスを使えるようになります。
この親元のクラスを使いながら中身を変更していきます。

まずは、魔法クラスやヒーラークラスの職業名にあるsuperに注目してみましょう。
これは、継承した時にセットで出て来る用語です。
魔法クラスやヒーラークラスにあるsuperは、それぞれ継承しているHumanクラスの”職業:”、HumanクラスのHPとMP、Humanクラスのmesを指しています。

次に、statusメソッドをオーバーライドしており、Humanクラスの内容にステータスの内容を変更しています。
メソッドのオーバーライドについては、【Java入門】PCソフトの上書き保存で覚える!!メソッドのオーバーライドの仕方をご覧ください。

メインメソッドを追加して動作を確認

一番上に、メインメソッドを追加して、きちんと出力するか確認してみましょう。
下記のように、出力されていたら、無事完成です。

最後に、Javaの継承においてはルールが定められています。
それをしっかり覚えておきましょう。

Javaにおける継承のルール

継承できるのは1つまで

まず1つ目のルールです。
このクラスの継承ができるのは、1つまでです。
つまりclass A extends B,C(){}といったことは、Javaにおいてはできません。
クラスの継承は、大変良く使われるので、そこをじっくり見ればわかりますが、extendsの先は必ず1つです。
このプログラムでもextends以降の継承するクラスは1つしか定義していません。

修飾子finalをつけるとクラスの継承やメソッドのオーバーライドも不可に

それと、継承のルールにはもう1つの決まり事があります。
classの前にfinalをつけてしまうと、その時点で継承ができなくなってしまいます。
また、親元のメソッドにおいてもfinalをつけると、メソッドのオーバーライドも不可となります。
結構、間違いやすいのでこの2つをしっかりと理解しておきましょう。

まとめ

今回は、少し難しいクラスの継承についてお話しました。
クラスの継承は、Javaの醍醐味の1つと言っても過言ではありません。
クラスの継承は、抽象的なので様々なものに置き換えて学習すると分かりやすいです。
今回は、その例として、オンラインゲームの職種を使いました。

•クラスの継承にはextendsを使う class a extends b
•親元の値を呼び出すときにはsuperを使う super.hp ,super.mp等
•クラスの継承は1つまで
•final修飾子がつくと、クラスの継承もオーバーライドもできなくなる

この4点をしっかり頭にいれておいて、大幅にあなたのスキルアップを図りましょう。
大丈夫、ここまでくればJavaがものすごい楽しくなります。
何度も何度も慣れることが重要です。
あなたのスキルアップを応援しています。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ
ページ上部へ戻る