используя абстрактное ключевое слово в интерфейсе - PullRequest
8 голосов
/ 26 апреля 2009

Я знаю разницу между «открытым интерфейсом» и «открытым абстрактным интерфейсом», но есть ли различия в применении к методам?

public interface IPluggableUi {
    abstract public JComponent getPanel();
    abstract public void initUi();
}

или

public interface IPluggableUi {
    public JComponent getPanel();
    public void initUi();
}

Ответы [ 5 ]

24 голосов
/ 26 апреля 2009

Методы, объявленные в интерфейсах, являются по умолчанию как общедоступными, так и абстрактными.

Еще можно:

public interface myInterface{
     public abstract void myMethod();
}

Однако использование этих модификаторов не рекомендуется. Как и модификатор abstract, применяемый к объявлению интерфейса.

В частности, относительно вашего вопроса:

"Для совместимости со старыми версиями платформы Java разрешено, но не рекомендуется, в качестве стиля, избыточно указывать абстрактный модификатор для методов, объявленных в интерфейсах."

Источник: http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html

Раздел 9.4: Объявления абстрактных методов.

4 голосов
/ 26 апреля 2009

примечание; В интерфейсе определены следующие значения: public static final my default, поэтому

int VALUE = 5;

совпадает с

public static final int VALUE = 5;

в интерфейсе.

4 голосов
/ 26 апреля 2009

нет, вы также можете написать

public interface IPluggableUi {
    JComponent getPanel();
    void initUi();
}

это то же самое

0 голосов
/ 26 апреля 2009

В Java нет открытого абстрактного интерфейса. Все интерфейсы являются «абстрактными» из-за того, что они не могут быть созданы. Все функции автоматически «абстрактны», поскольку их необходимо реализовать.

0 голосов
/ 26 апреля 2009

Нет. Вы можете применять abstract только для метода к абстрактному базовому классу.

Интерфейсы определяют набор методов, которые в конечном итоге должны быть реализованы конкретным (неабстрактным классом).

Abstract будет указывать метод, который не реализован в абстрактном базовом классе и что должен быть реализован в конкретном подклассе.

(обратите внимание также, что ключевое слово public является лишним в спецификациях методов интерфейса)

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