почему это дает мне ошибку компиляции: не может уменьшить видимость унаследованного метода от DeclareStuff - PullRequest
2 голосов
/ 16 декабря 2010
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);
     }
     }

почему это дает мне ошибку компиляции: Невозможно уменьшить видимость унаследованного метода от DeclareStuff, в строке 9, то есть в void doStuffe (int s).

1 Ответ

12 голосов
/ 16 декабря 2010

Методы интерфейса неявно public.Реализации методов интерфейса также всегда должны быть public.

Ошибка компилятора говорит вам, что вы не можете сделать реализацию метода "менее" видимой, чем его супертип.Метод вашего класса имеет видимость по умолчанию, которая "менее" видима, чем метод public интерфейса.

Так что создайте метод TestDeclare.doStuff public, и он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...