PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~継承について~

      2016/03/12

オブジェクト指向の特徴である継承のオブジェクト指向です。

やっとここまでこれました!一番知りたかったところですね(`・ω・´)

 

継承とは

 

クラスが持っているメンバを別のクラスに引き継がせることを継承といいます。

継承でのクラスの関係は以下のように呼びます。

  • 継承する元となるクラス→スーパクラス(親クラス)
  • 受け継いで作ったクラス→サブクラス(子クラス)

※継承できるクラスは1つだけ!

 

継承すると、わざわざサブクラスで変数やメソッドなどのメンバを定義しなくても

スーパクラスのをそのまま使っちゃえばいいというわけですね。

 

extends(エクステンズ)

 

サブクラスを定義するときは、extendsを使います。

class Games {
	public static void main(String[] args){
		//スーパクラスをインスタンス化
		MainData main = new MainData();
		main.title = "ファイナルファンタジー";
		main.genre = "RPG";
		
		//サブクラスをインスタンス化
		SubData sub = new SubData();
		sub.title = "モンスターハンター";
		sub.genre = "ハンティングアクション";
		sub.Company = "カプコン";
		
		main.print();
		System.out.println();
		sub.print();
	}
}

class MainData {	//継承元となるスーパクラス
	String title;
	String genre;
	
	void print(){
		System.out.println("メインデータ");
		System.out.println("タイトル:" + title);
		System.out.println("ジャンル:" + genre);
	}
}

class SubData extends MainData {	//MainDataクラスを継承したサブクラス
	String Company;
	
	void print(){
		System.out.println("サブデータ");
		System.out.println("タイトル:" + title);
		System.out.println("ジャンル:" + genre);
		System.out.println("制作会社:" + Company);
	}
}

 

 

上記のソースではMainDataクラスがスーパクラスとなり、

それをextendsで受け継いだSubDataクラスがサブクラスとなっています。

 

なので、SubDataクラスでわざわざtitleやgenreといった変数を宣言しなくても

MainDataクラスから引き継いでいるので使用することができます。

 

上記を実行すると結果は次のようになります。

メインデータ

タイトル:ファイナルファンタジー

ジャンル:RPG

 

サブデータ

タイトル:モンスターハンター

ジャンル:ハンティングアクション

制作会社:カプコン

 

ちなみに、print()メソッドも親クラス・子クラスどちらも同名となっていますね。

これはSubDataクラスからprint()メソッドをコメントアウトすると、

MaindDataクラスのprint()メソッドが使われるようです。

 

SubDataクラスからprint()メソッドをコメントアウトした結果はこうなります。

メインデータ

タイトル:ファイナルファンタジー

ジャンル:RPG

 

メインデータ

タイトル:モンスターハンター

ジャンル:ハンティングアクション

 

MaindDataクラスのprint()メソッドには制作会社ありませんのでこうなるわけです。

 

こうしてみると継承も興味深くて面白くなってきました(´∀`)

 

 

人気ブログランキング

 -