1. HOME
  2. »
  3. プログラミング・Web
  4. »
  5. Java
  6. »
  7. 【Java】スーパクラスとサブクラス、継承について

【Java】スーパクラスとサブクラス、継承について

Javaを使っていると継承という言葉をよく耳にしますが、どういうものなのか、いまいちピンとこない人も多いと思います。

今回はJavaの、スーパークラス、サブクラス、そして継承について、詳しく解説していきたいと思います。

目次
  1. スーパークラス、サブクラス、継承とは
  2. 継承を使ってみよう
  3. 継承を使う上での注意点(is-a関係について)
  4. まとめ

スーパークラス、サブクラス、継承とは

たとえば、ものすごい技術を持った、アーティストがいるとします。
そのアーティストの子供は、親を見て、その技術を受け継ぎます。
そして、技は代々受け継がれていきます。

と、いうふうに、プログラミングにおける継承は、親から子へ技が受け継がれていくもの、というイメージを持っておくと、この後の話が分かりやすいと思います。

さて、プログラミングでは、いろんな機能などをまとめるための、クラスという仕組みがあります。
クラスは、とある方法を使うことで、別のクラスの機能などを、受け継ぐことができます。

この、別のクラスの機能などを受け継ぐことを、継承といいます。
また、継承の元になるクラスをスーパークラス(親クラス)継承して作られたクラスのことをサブクラス(子クラス)、といいます。

継承を使ってみよう

では、実際に継承を使ってみましょう。

例えば、こんな物語があったとします。


主人公は、黒魔術専門の魔術師。
彼には、人々が抱える恨みを代わりに晴らす役目があり、ゆっくりじわじわと時間をかけて、標的を呪いにかける。
彼自身は膨大な額の報酬を受け取るかわりに、自らの命を半分に縮める──


では、今回はこの物語を、プログラムにしていきます。

まず、主人公は「黒魔術師」です。
「黒魔術師(black magician)」なので、つまりは「魔術師(magician)」です。

基本的な魔術は使えますが、それを応用した「黒魔術」を使うことができます。

ではまず、「魔術師(magician)」のクラスを作りましょう。
今回、魔術師のHPは200とし、doMagicメソッドを呼び出すことで、魔法を使うことができるクラスにしました。

public class Magician {
	int hp=200;
	void doMagic() {
		System.out.println("魔法を使った");
	}
}

つづいて、「黒魔術師(black magician)」のクラスを作ります。
doBlackMagicメソッドを呼び出すことで、黒魔術を使えますが、引き換えにHPが半分になります。

public class BlackMagician extends Magician {
	void doBlackMagic() {
		System.out.println("自らのHPを半分に削り、黒魔術を使った");
		hp /= 2;
	}
}

最初の行をご覧ください。
extendsを使って、さきほどのMagicianクラスを継承しています。

これで、BlackMagicianクラスでは、Magicianクラスのメソッドや変数が使えるようになります。

public class Main {
	public static void main(String[] args) {
		Magician magician = new Magician();
		BlackMagician blackMagician = new BlackMagician();
		
		System.out.println(magician.hp);		// 出力結果:200
		System.out.println(blackMagician.hp);	// 出力結果:200
		magician.doMagic();						// 出力結果:魔法を使った
		blackMagician.doMagic();				// 出力結果:魔法を使った
		blackMagician.doBlackMagic();			// 出力結果:自らのHPを半分に削り、黒魔術を使った
		System.out.println(magician.hp);		// 出力結果:200
		System.out.println(blackMagician.hp);	// 出力結果:100
		magician.doBlackMagic();				// エラー
	}
}

上の例では、魔術師(magician)も、黒魔術師(black magician)も、魔法が使えます
しかし、魔術師は黒魔術(black magic)を使うことができません

黒魔術師は、黒魔術を使うことができますが、使ったあとにHPを見ると半分に減っているのが分かります。

継承を使う上での注意点(is-a関係について)

継承を使う上での注意点として、全く関係無いクラスを継承することは、よくないとされています。
たとえば、格闘家クラスを継承した黒魔術師クラス、といったものです。

もちろん、継承できない訳ではありませんが、全く関係無いクラスを継承することで、バグの原因になることがあります。

では、どういうクラスなら継承していいのでしょうか。
それを解決するのが、そのクラスに対して、is-a関係にあるか、という考え方です。

学校で、「This is a pen.」という英文を習ったかと思いますが、この「is a」のことです。

今回の場合、「黒魔術師 is a 魔術師」という関係が成り立ちます
そのためこれは、継承しても問題がない、といえます。

逆に、「黒魔術師 is a 格闘家」というのは、関係が成り立っていません。
この場合は、継承を避けることで、バグを防ぐことができます。

まとめ

継承は、他のクラスの能力を受け継いだクラスを作ることができるものです。

継承の元になるクラスをスーパークラス(親クラス)、継承して作られたクラスのことをサブクラス(子クラス)、といいます。

とても便利なのですが、なんでもかんでも継承を使ってしまうと、バグの原因となる可能性があります。
そういったことを防ぐため、is-a関係にあるかどうかを考えて、継承を行なうようにしましょう。

スポンサードリンク

関連コンテンツ

オススメ記事

Windows10にPythonをインストールする方法

みなさんこんにちは。@It_is_Rです。今回はWindows10にPythonをインストールする方法を紹介します。 Pythonのインストーラをダウンロード では、Python

リセットCSS は何を使う? おすすめ8選(コピペも可能!)

Web開発でブラウザごとの表示の違いをリセットしてくれる リセットCSS というものがあります。 しかし、何を使っていいのかと感じている人もいると思います。 今回はこの リセットCSS につい

【Unity】開発したゲームをAndroidで実機テストする方法

こんにちは。現在、最新ゲーム熱意製作中の@It_is_Rです。 さて、今回はUnityで開発したゲームをAndroidで実機テストする方法です。Unity上で再生したときは動いていたゲームも、

WordPress テーマ自作 | Pug ( Jade ) で記事一覧ページを作る方法!

愛と勇気だけが友達の@It_is_Rです。 今回はPugでWordPressテーマを作る方法を少し紹介します。 詳しいテーマの作り方はこちらをご覧ください。 WordPressのテーマを自作

webpackを使ってゲームエンジンを作ろう!(JSライブラリの作り方)

みなさんこんにちは。今回もたのしくプログラミングを学んでいきましょう! 前回の「JavaScriptでRPGを作ろう!スマホにも対応したゲームの作り方」では、JavaScriptでゲームエンジ

Unityのダウンロードとインストールの方法【Mac】

UnityはUnity Technologiesのゲームエンジンです。2D、3Dゲーム両方に対応しており、大手企業も使用してゲームを開発している、とても高機能なツールです。 Unityにはいく

MacにPythonをインストールしてみよう!小学生からのPython入門

さて、今回《こんかい》もプログラミングを学んでいきましょう! 前回はWindows《ウィンドウズ》にPython《パイソン》をインストールする方法《ほうほう》を紹介《しょうかい》しました。今回

パスの書き方を覚えるべ!

パスの書き方を覚えよう。絶対パス、相対パス、ルート相対パスの違い

みなさん、こんにちは。今日もプログラミングの勉強《べんきょう》をはじめていきましょう。 今回は、パスの書き方について学びます。パスというのは、ファイルの場所《ばしょ》を、パソコンに教《おし》え

【Android Studio】Button(ボタン)を作る基本中の基本。

ボタンを作る基本中の基本ですが、ボタンを作ること自体が基本中の基本です。@It_is_Rです。 タイトルなんてどうだっていいんです。肝心のなのは真心です。 Androidアプリ開発、7回目となりまし

GitHubのアカウントを作成する方法

Gitを使うとバージョン管理が簡単になりますが、それ以前に自分の頭の中を管理するのが大変な@It_is_Rです。 Gitの使い方をいくつかの記事に分けて紹介していきたいと思います。まず今回はG

コメントを残す(コメントは承認後に反映されます)

メールアドレスが公開されることはありません。




オリジナルゲーム.com