Тимур Машнин

Объектно-ориентированное программирование на Java. Платформа Java SE


Скачать книгу

мы создаем новый объект – и мы делаем это с помощью ключевого слова «new» и конструктором – строки здесь являются исключением – и мы резервируем пространство в памяти для хранения значений полей.

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

      Переменная и именем объекта будет хранить ссылку на объект.

      Но в этих объяснениях мы не будем акцентировать внимание на идеи ссылки или указателя, поскольку Java как-то не поддерживает эту идею.

      Другие языки программирования делают это.

      Мы также не будем говорить об уничтожении объектов и освобождении памяти.

      Потому что Java делает это автоматически с помощью так называемого «сборщика мусора», который автоматически освобождает память для объектов без какой-либо ссылки.

      Когда ссылка указывает на отсутствие объекта, мы говорим, что его содержимое равно нулю.

      Когда вы создали новый объект и дали ему имя – или, вернее, определили ссылку для него – как вы получаете доступ к полю или атрибуту?

      Ответ заключается в использовании точечной нотации.

      Вы хотите ссылаться на поле «n1» объекта «t».

      Вы пишете «t.n1.»

      И для методов мы делаем что-то подобное.

      Чтобы вызвать метод «get1 ()» для объекта «t», мы пишем «t. get1 ()».

      Область видимости

      Классы имеют двойную цель.

      Они могут использоваться для определения новых типов данных, которые связаны с решением задачи.

      И также они служат для структурирования кода.

      У нас есть инкапсулированные переменные и методы в классах.

      Однако любая другая часть программы может изменять переменные и вызывать методы.

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

      Представьте себе, что в нашей модели автомобиля у нас есть поле gas, которое служит индикатором оставшегося топлива в машине.

      Представьте, что эта переменная должна содержать значение от 0 до 100, 0 означает пустой бак, а 100 – полный.

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

      Мы также можем заполнить бак на АЗС, и в этом случае переменная gas увеличивается.

      Таким образом, топливо уменьшается с помощью метода перемещения и увеличивается с помощью метода заполнения.

      Однако у нас может быть проблема, поскольку любая часть программы имеет доступ к этой переменной gas.

      Кто-то может даже изменить переменную на отрицательное число, что не имеет смысла.

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

      Давайте посмотрим на эти два модификатора доступа, public