В языке Java переменные, объявленные в интерфейсе, неявно всегда являются полями с модификаторами public, static и final. То есть являются константами. С данном уроке рассмотрим практическое применение переменных в интерфейсе.
Порой бывает полезно описывать интерфейсы в которых присутствуют исключительно переменные. Но казалось бы, зачем нужен интерфейс без сигнатур методов? Какая от него польза?
Дело в том, что при росте проекта, да и в крупных проектах вообще, часто требуется иметь множество констант, и при этом необходимо чтобы они были доступны из разных исходных файлов с кодом. Это могут быть какие-либо математические величины, ограничения, размеры массивов, строки с данными для подключения к базе данных и т. п.
Данная проблема удобно решается с помощью переменных в интерфейсах: класс, в котором требуется использовать объявленные в интерфейсе константы, должен реализовывать данный интерфейс.
Пример программы, использующей переменные в интерфейсе
Рассмотрим вышесказанное на примере. Напишем на Java интерфейс, содержащий четыре константы: число пи, ускорение свободного падения, а также минимальное и максимальное значения отрезка масс, для которых будем рассчитывать значение силы тяжести. Данный интерфейс поместим в файл IConst.java.
1 2 3 4 5 6 7 8 9 |
package variablesintheinterface; public interface IConst { double PI = 3.14; //число ПИ double g = 9.81; //ускорение свободного падения int MIN = 1; int MAX = 5; } |
Еще раз отдельно стоит сказать, что все эти четыре поля в интерфейсе неявно всегда считаются объявленными с модификаторами public, static и final.
Теперь в главном классе проекта попробуем использовать константы из интерфейса IConst. Для доступа из класса к переменным в интерфейсе необходимо, чтобы класс реализовывал соответствующий интерфейс. После имени класса нужно указать: implements IConst.
В классе с помощью переменных из интерфейса вычислим площадь круга и значения сил тяжести для значений масс в пределах от MIN до MAX включительно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package variablesintheinterface; public class VariablesInTheInterface implements IConst { public static void main(String[] args) { double radius = 4.5; double area = PI * radius * radius; System.out.println("Площадь круга равна: " + area); System.out.println(); for(int m = MIN; m <= MAX; m++) System.out.println("Сила тяжести для тела массой " + m + " кг = " + (m * g) + " Н"); } } |
Запустим программу и посмотрим на результат её работы:
Как вы видите, довольно полезно в интерфейсе иметь статические переменные-константы. Тем более когда речь идёт о крупных проектах, данный подход ни с чем не сравнится по удобству использования для доступа к константам из любого исходного файла программы.
Скачать исходник проекта, написанного в среде NetBeans и ссылка на репозиторий GitHub:
Скачать исходник Репозиторий проекта на GitHub
Спасибо за прочтение статьи!
Поделиться в соц. сетях: