interfaceで定義したメソッドは暗黙でpublic abstractになるので、
オーバーライドしたメソッドには必ずpublicを付ける
Sample.java
interface Inter
{
void methodX(); // public abstract
}
class ImpleInter implements Inter
{
public void methodX() // public 付けないとダメ
{
System.out.println("ImpleInter");
}
}
class Sample
{
public static void main(String[] args)
{
Inter i = new ImpleInter(); // interface型の変数にオブジェクトの参照を代入
i.methodX();
}
}
じゃないと
Sample.java:8: ImpleInter の methodX() は Inter の methodX() を実装できません。スーパークラスでの定義 (public) より弱いアクセス特権を割り当てようとしました。
void methodX()
^
エラー 1 個
参照型の型変換
interface名 変数名 = インターフェースを実装したオブジェクト
Inter i = new ImpleInter(); // interface型の変数にオブジェクトの参照を代入
呼び出し側でインターフェースを実装したクラスがなくても、インターフェース型の変数を用意してメソッドを呼び出すことができる。