Константы интерфейса в Java
Интерфейс может хранить константы - поля, значение
которых не меняется. В Java такие поля неявно
public static final: к ним обращаются через имя
интерфейса или из реализующего класса. Пример константы
рядом с методом:
interface DiskFigure {
double PI = 3.141592653589793;
double area(double radius);
}
Модификаторы public static final можно не писать -
компилятор подставит их сам. Константу удобно использовать
в формулах внутри класса:
class Disk implements DiskFigure {
@Override
public double area(double radius) {
return DiskFigure.PI * radius * radius;
}
}
Константы интерфейса наследуются вместе с контрактом: дочерний интерфейс видит поля родителя, класс-реализация тоже может читать их по имени базового интерфейса. Ограничения для записи блога:
interface PostLimits {
int MAX_TITLE_LEN = 200;
int MAX_TEXT_LEN = 10000;
}
class Post implements PostLimits {
public boolean isTitleValid(String title) {
return title.length() <= PostLimits.MAX_TITLE_LEN;
}
}
Сделайте интерфейс EmployeeLimits с константами
MIN_AGE со значением 18 и MAX_AGE
со значением 65.
Сделайте класс Employee, реализующий
EmployeeLimits, и метод isAgeValid,
который проверяет, что возраст между MIN_AGE
и MAX_AGE.