LoginSignup
6
7

More than 5 years have passed since last update.

interfaceを実装したクラスでメソッドをオーバーライドする時

Posted at

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型の変数にオブジェクトの参照を代入

呼び出し側でインターフェースを実装したクラスがなくても、インターフェース型の変数を用意してメソッドを呼び出すことができる。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7