Предыдущее занятие | Следущее занятие |
С чем познакомимся:
Таблица 1. Интерфейс класса Box (Класс описывает параллелепипед. Его свойства - длина, ширина, высота).
Имя поля (метода) | Модификатор | Область видимости | Описание |
---|---|---|---|
a | private | только внутри класса | длина параллелепипеда |
b | private | только внутри класса | ширина параллелепипеда |
c | private | только внутри класса | высота параллелепипеда |
Box() | без модификатора | "Конструктор по-умолчанию", создает экземпляр класса с "нулевыми" свойствами - длина, ширина, высота | |
getVolume(double x, double y, double z) | public | внутри класса, вне класса | вычисляет объем параллелепипеда |
Новые термины, которые встретились нам в таблице:
- модификатор (еще можно встретить другое название - спецификатор) в Java - ключевое слово, которое используется для описания некоторых свойств объекта, его полей и методов. В случае класса Box, используются модификаторы полей класса: private, public;
- область видимости. Понятие тесно связано с модификаторами. Если поле класса объявить private, то использовать имя поля можно только внутри тела класса. Модификатор public применяется для открытых частей интерфейса объекта и говорит о том что, например, наш метод getVolume(), может быть использован вне класса Box для доступа к вычислению его объема см. Листинг 1 из Занятия №6. Чем можно воспользоваться для вызова метода из другого класса (программы).
Почему в практике ООП не принято изменять свойства объекта напрямую (например, как мы делали на Занятии №5 b1.a = 2.0;
), а принято "прятать" свойства объекта внутри класса (используя модификатор private)?
Да очень просто - а вдруг пользователь-программист введет отрицательное число для поля "а" и значение объема в дальнейшем тоже станет отрицательным. То есть, неплохо было бы где-то провести проверку вводимых данных. А где мы можем сделать какие то действия в Java? - в конструкторе или методе. Так значит программист, проектирующий класс, должен предусмотреть какие методы класса сделать открытыми и доступными программисту-пользователю и там проводить необходимые проверки, а какие поля и методы - закрытыми и доступными только внутри спроектированного им класса. Таким образом, положение о том, что методы расположенные в открытой части класса формируют интерфейс класса, является почти стандартом в Java.
Задание для закрепления материала:
Составьте программу MyProgram с использованием класса Box для вызова метода getVolume(). Подсказка: файл MyProgram.java должен лежать в одной директории с файлом Box.class и иметь метод main()