Может ли интерфейс запретить объект, имеющий определенный тип данных? - PullRequest
0 голосов
/ 30 января 2019

Интерфейс может заставить класс переопределить определенный метод.Может ли это также заставить класс содержать определенную переменную?Т.е. класс, который implements MortalEntity должен содержать boolean alive?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Нет, но вы можете достичь почти того же самого, требуя от класса иметь метод получения и установки для того, что внешние пользователи класса могут считать переменной boolean alive.

В кодовой форме:

public interface MortalEntity {
    boolean isAlive();
    void setIsAlive();
    void setIsNotAlive();
    // alternative setter (less readable IMO)
    // void setIsAlive(boolean isAlive);
}

В некотором смысле это лучший вариант, потому что у вас может возникнуть более сложная реализация, когда одной переменной isAlive уже недостаточно.Тогда требование иметь точную переменную станет неудобным.

0 голосов
/ 30 января 2019

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

как показано ниже

abstract class implements theInterface {
    public String variable;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...