インタフェースとは何か

 

単語には、「一般的な用語」と「ある特定の条件(業界)で使われる
狭義の専門用語(業界用語)」とがあります。
どちらの意味で使われているかがわからないと、とても混乱しますね。

毎度、管理人イガジーです。

インタフェース、あるいはインターフェース(interface)は、一般用語としては
「何かと何かを取り持つ接続部分」という意味です。
鍵穴と鍵みたいなものと言いますか、使い方(用法)を明記したものです。

例えば、Label というクラスは、Label l=new Label(“文字列”); という形で
使いますが、Label l=new Label(123); と数字にするとエラーになります。
これを「インタフェースが合っていない」などと言ったりします。

Javaの世界で、(狭義の)インタフェース(interface)と言うと、「型宣言だけの
クラスもどき(クラスの様でクラスとは異なるモノ)」という意味になります。

何故、そんなものがあるのか?、何に使うのか?、というのはとても説明が
難しいのですが、「インタフェース」を知らなくても、実は既に接しているのです。
すなわち、これまでのプログラム例でもその恩恵にあずかっているのです。
例えば、Buttonを使う場合に、

class DoButton implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent arg0) {
		System.out.println("Pushed");
	}
}

というようなクラスを作って、それを Button に addActionListener で登録する
のはお馴染みですよね。
implements ActionListener と書くと、Eclipseが「未実装のメソッドがあるぞ」
と警告を表示します。
「よきに計らえ(Add unimplemented methods)」とクリックすると

class DoButton implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
	}
}

と雛形(中身がカラのメソッド)が生成されます。
これは、ActionListener には actionPerformed()というメソッドが必須
ということなのです。
中身がカラだとしてもメソッドを用意しなければなりません。

このカラクリ(必須のメソッドがあるぞ、と定義しているの)が
Javaの(狭義の)「インタフェース」なのです。
標準で(あらかじめ)

pubic interface ActionListener {
	public void actionPerformed(ActionEvent arg0) { }
}

と宣言されているのだ。と理解してください。
この interface宣言があると、上記のように「ActionListener には
actionPerformed()というメソッドが必須」という扱いになるのです。

自分でinterfaceを宣言する事は(自分1人で作っている間は)
ほとんどないと思いますが、そういう仕掛けがあると知っておけば
将来「あぁ便利だな」と思える時が来るかもしれません。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)