Интерфейс, все методы должны быть абстрактными, но один? - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть ситуация:

public interface AlarmBroadcasterRC {
    abstract void DataIn(byte[] data);
    abstract void DataOut(byte[] data);
    abstract Boolean Drop(String id);
    abstract Boolean Connected(String id, Boolean state);
}

public class GeneralActivity extends Activity implements View.OnClickListener, AlarmBroadcasterRC {
.....
}

Но я получаю ошибку от компилятора при объявлении класса: enter image description here

Означает ли это, что в Android Java интерфейс ДОЛЖЕН реализовывать первый метод или, если все его методы являются абстрактными, то класс также должен быть абстрактным?

Извините, что расширил вопрос: Я следовал за одним из ответов от здесь :

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

В interface все methods по умолчанию abstract, вам не нужно добавлять ключевое слово abstract.

, когда вы реализуете interface, вы должны реализовать все это методы или объявление класса как абстрактного.

Что вы можете сделать, вы можете обеспечить реализацию методов по умолчанию в interface, если не хотите реализовывать в подклассе.

Пример :

public interface AlarmBroadcasterRC {
    default void DataIn(byte[] data) { }
    default void DataOut(byte[] data) {}
    default Boolean Drop(String id) {  return false; }
    default Boolean Connected(String id, Boolean state){ return false; }
}
1 голос
/ 02 февраля 2020

Если у вас есть класс, который реализует интерфейс и не является абстрактным, вы должны реализовать все его абстрактных методов, а не только первый.

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