今日は、趣味のバスケをした後に、東広島のカフェEcranで勉強中です。そして昨日の筋トレの筋肉痛が徐々にきています。。
それでは、今日のお題"インターフェイス"について説明したいと思います。
インターフェイスとは、定数とメソッド宣言を集めたものです。そして、そのメソッドの中身は一切実装しません。実装すると、コンパイルエラーが発生します。その代わりに、他のクラスがインターフェイスのメソッドの中身を実装します。
また、インターフェイスは複数のクラスで利用可能で、かつ、クラスは複数のインターフェイスを実装することが出来ます。
うる覚えで書きますが、androidでもインターフェイスを活用している部分があります。アプリの画面で、とあるボタンを押したときに、どんな処理をするか、というのをインターフェイスを使って実装しています。
簡単な例を以下に示します。
---------------------------------------------
/* interfaceの使い方 */
class Example_7_1{
public static void main(String args[]){
//Activity1クラスのインスタンス化
Activity1 act1 = new Activity1();
act1.shortTouchEvent();
act1.longTouchEvent();
act1.doubleTouchEvent();
//Activity2クラスのインスタンス化
Activity2 act2 = new Activity2();
act2.shortTouchEvent();
act2.longTouchEvent();
act2.doubleTouchEvent();
}
}
//interfaceは実装はしない
interface ShortTouch{
//自動的にメソッドにはabstractとpublicの修飾子がつく
void shortTouchEvent();
}
interface LongTouch{
void longTouchEvent();
}
interface DoubleTouch{
void doubleTouchEvent();
}
//interfaceメソッドが本体を持つことはできない
/*interface AAA{
void aaaa(){
System.out.println("aaa");
}
}*/
class Activity1 implements ShortTouch, LongTouch, DoubleTouch{
//コンストラクタ
Activity1(){
System.out.println("--Activity1--");
}
//interfaceの実装
public void shortTouchEvent(){
System.out.println("フォーカス移動");
}
public void longTouchEvent(){
System.out.println("アイコン持ち上げ");
}
public void doubleTouchEvent(){
System.out.println("アプリ起動");
}
}
class Activity2 implements ShortTouch, LongTouch, DoubleTouch{
//コンストラクタ
Activity2(){
System.out.println("--Activity2--");
}
//interfaceの実装
public void shortTouchEvent(){
System.out.println("画面遷移");
}
public void longTouchEvent(){
System.out.println("コンテキストメニュー表示");
}
public void doubleTouchEvent(){
System.out.println("拡大表示");
}
}
---------------------------------------------
★実行結果
--Activity1--
フォーカス移動
アイコン持ち上げ
アプリ起動
--Activity2--
画面遷移
コンテキストメニュー表示
拡大表示
---------------------------------------------
上のプログラムは、3つのinterfaceを作成しています。いずれも、画面をタッチしたときの動作処理を想定して、作成しています。そして、そのinterfaceを、Activityというクラスに実装しています。実装するには、implementsを使用します。実装するときは、ちゃんと全てのインターフェイスメソッドを実装してやらないと、コンパイルエラーが発生するので、注意が必要です。
また、インターフェイスメソッドには、自動的にabstractとpublicの修飾子がつくので、実装するときにpublic修飾子をつけないと、コンパイルエラーが発生します。
インターフェイスを使うと便利!!というような例ではありませんでしたが、次回のブログでもう少し詳しいところにつっこんでいこうと思います。
以上です!!