PHASE2 LOG

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

Javaのお勉強~インタフェース~

      2016/03/12

インタフェースもどういうものか全然想像がつきませんでしたね。

読んでる本でも後ろの方になってきたので、なかなか難しくなってきました(;・∀・)

今回もがんばってお勉強していきます。

 

インタフェースとは

 

インタフェース継承関係にないクラスに機能を提供するものです。

クラスと似ていますが、定数と抽象メソッドしか扱えないのがクラスと異なる点です。

 

また、インタフェースを利用することを「インタフェースの実装」といいます。

前回の記事で勉強しましたが、抽象メソッドは継承して

オーバーライドしないと使えませんでしたね。

 

ん?でもさきほど「継承関係にないクラスに機能を提供する」なんて書きました。

継承しないとオーバーライドできないのでは…?

 

では実際にどうやって使うのか見てみましょう

 

インタフェースの実装

 

インタフェースを定義するには「interface」を使います。

定数と抽象クラスを使うので、実際には以下のように自動的に認識されていますが

省略することができるので、ここは省略するべきでしょうね。

 

interface Item {
	//public static final int category = 123;
	//public abstract void Buy();
	int category = 123;
	void Buy();
}

 

 

また、インタフェースを実装するには「implement」を使います。

ちなみにインタフェースはいくつでも実装することができます。

クラスだとItemもShopも同時に継承するというのは出来ないのでこれが違いですね!

 

例を見てみましょう。

//1つ目のインタフェース
interface Item {	
	void Buy();
}

//2つ目のインタフェース
interface Shop {
	String time = "AM 10:00";
	void Open();
}

//インタフェースの実装(カンマ区切りで複数実装できる)
class Jisou implements Item, Shop {
	//Buy()メソッドをオーバーライド
	public void Buy() {
		System.out.println("買った商品");
	}
	//Open()メソッドをオーバーライド
	public void Open(){
		System.out.println("オープン時間:" + time);
	}
}

public class Inter {
	public static void main(String[] args){				
		Jisou lowson = new Jisou();
		lowson.Buy();
		lowson.Open();
	}
}

 

 

上記の「Item, Shop」のようにインタフェース名をカンマで区切るといくつでも実装することができます。

クラスで継承する場合、1つしか継承できなかったですよね。

これがクラスとインタフェースを使い分けるヒントかも…

 

また、インタフェースで定義した抽象メソッドは

実装したクラスでオーバーライドしないとエラーになるので注意しましょう。

 

これをイメージにするとこんな感じです。

implements

 

インタフェースは継承やオーバーライド、抽象メソッドの意味などを

押さえた上で勉強しないとチンプンカンプンになりそうですね!

 

実際私も前の記事を読み返して思い出してるところがあるので、

ちゃんと覚えておきたいです(;´∀`)

 

 

人気ブログランキング

 -