2010-12-16 33 views
2
から
1interface DeclareStuff { 
2 public static final int EASY = 3; 
3 void doStuff(int t); } 
4 public class TestDeclare implements DeclareStuff { 
5 public static void main(String [] args) { 
6 int x = 5; 
7 new TestDeclare().doStuff(++x); 
8 } 
9 void doStuff(int s) { 
10 s += EASY + ++s; 
    System.out.println("s " + s); 
    } 
    } 

を継承したメソッドの可視性を減らすことはできません。つまり、9行目で、DeclareStuffから継承されたメソッドの可視性を減らすことはできませんでvoid doStuffe(int s)を返します。それは私にコンパイルエラーを与える理由:それは私にコンパイルエラーを与える理由DeclareStuff

答えて

12

インターフェイスメソッドは暗黙的にpublicです。インタフェースメソッドの実装も常にpublicでなければなりません。

コンパイラエラーは、メソッドの実装をそのスーパータイプよりも「あまり」見せないことができないことを伝えています。クラスのメソッドにはデフォルトの可視性があり、インタフェースのpublicメソッドよりも「あまり」見えません。

TestDeclare.doStuffpublicメソッドにするとうまくいきます。

関連する問題