はじめに
前回はabstractを使うことで、特定のデータを隠して直接表示させないようにする方法について見てきた。
abstractについての記事はこちら↓
【Javaプログラミング】abstract(抽象:アブストラクト)クラスとメソッドとは?-プロショvol.56
特定のデータを隠して直接表示させないようにすることは「抽象化」と呼ばれる。
今回取り上げる「interface(インターフェース)」がプログラムを抽象化するもう一つの方法。
abstractとinterface。
interface(インターフェース)を使う際のルール
interfaceを使用する際にも、abstractの時と同様に一定のルールがある。
- interfaceを使用したクラスの中のメソッドには処理内容を書けない
abstractクラスでは通常のメソッドabstractを使ったメソッドも一緒に書くことができた。
でもinterfaceではクラスの中のメソッドは全て中身は空っぽにしなければいけない。
- interfaceの場合は「extends」ではなく「implements」を使ってデータを引き継ぐ
abstractクラスは「extends」を使って別のクラスに引き継がれる。
interfaceクラスの場合は「implements」。
- メソッドの内容を書くときは「public」を付けること
implementsによって引き継いだクラスの中に、メソッドの処理内容を書くときはメソッドに「public」を付けないとエラーが出ちゃう。
- interfaceクラスの中に「int A=45;」などのデータを書いた場合は呼び出す際にオブジェクトは不要
interfaceクラスの中に書かれた「int A=45;」などのデータは、標準が「public」で「static」なものになっている。
実際に書かれていないが内部的に「public」で「static」ということから、どこのクラスからでもアクセスできるし呼び出す際にオブジェクトを必要としない。
- interfaceにコンストラクタを使うことはできない
interfaceはオブジェクトを作れないからコンストラクタも使えない。
コンストラクタについては以下参照。
コンストラクタって何?使い方は? by Javaプログラミング初心者vol.46
interfaceを使ったコード
interfaceを使って作ってみたコードが以下。
void taste();
void smell();
}class Tonkatsu implements cooking{
public void taste() {
System.out.println(“美味しい”);
}
public void smell() {
System.out.println(“いい匂い”);
}
}
public class cookingMain {public static void main(String[] args) {
Tonkatsu katsu = new Tonkatsu();
katsu.taste();}
}
実行すると以下の結果が得られた。
interfaceをもつcookingクラスの中にはメソッドが2つある。
void taste();
void smell();
どちらも「public」の表示はないが、内部的には「public」になっている。
Tonkatsuクラスがcookingクラスを引き継いでいる。
Tonkatsuクラスには2つのメソッドの処理内容がそれぞれ書かれている。
こちらのメソッドには「public」と書かないとエラーが起きた。
私はinterfaceクラスのメソッドには「public」を付けなかったけど、同じ形にするために「public」を付けると分かりやすいかも。
public void taste();
public void smell();
}
interfaceのクラスのオブジェクトは作ることができないから、クラスを引き継いだTonkatsuクラスのオブジェクトを作成する。
オブジェクトを作成する方法は以下参照。
自分で作ったクラスの中にメソッドを作る方法 by Javaプログラミング初心者 Vol.40
作ったオブジェクトと使用したいメソッド名を指定して呼び出すと結果が得られる。
メソッドの呼び出し方については以下参照。
自分で作ったメソッドをオブジェクトを作って呼び出す by Javaプログラミング初心者 Vol.41
最後に
大体は前回にまとめたabstractと同じ。
ただ、abstractはextendsを使用していたのに対し、interfaceではimplementsを使用する。
コードにちょっとした違いがあるから混同しないように注意しないといけない。
コメント