Изучаем Java

Вы здесь: Главная >> Java-самоучитель >> ООП, создание объектов

ООП, создание объектов


Класс и создание объектов (экземпляров класса)

В этой главе подробно рассматривается работа с классами, объектами, методами и интерфейсами.
Класс — это структура данных, предназначенная для создания объектов. О классах, объектах, методах и свойствах было уже немного рассказано. Остановимся еще на некоторых значимых моментах этой темы.

Класс содержит обычно члены двух типов: поля — переменные, принадлежащие классу и способные определять свойства объекта (или класса), и методы — обособленные именованные фрагменты кода. Также класс может содержать вложенные классы и интерфейсы. При объявлении класса перед именем класса используются ключевые слова, называемые модификаторами. В языке Java используются следующие модификаторы класса.

Модификаторы доступа (иногда называемые спецификаторами доступа) — public (открытый), protected (защищенный) и private (закрытый) (они существуют не только для классов). Последние два в объявлении класса не используются, используется только public. Если указывать этот модификатор, то это означает, что этот класс доступен абсолютно отовсюду, и ссылки на него можно помещать в любом коде.

• Модификатор abstract или final. Если использовать модификатор abstract, то создавать экземпляры такого класса будет нельзя, в этом классе содержатся абстрактные методы (об абстрактных методах мы будем говорить позже). Если указан модификатор final, то у класса не может быть наследников.

• Модификатор strictfp. Этот модификатор указывает, что операции для чисел с плавающей точкой должны выполняться одинаково на всех виртуальных машинах.

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

• Модификатор final. Он означает, что данная переменная является константой.

• Модификаторы доступа: private (закрытый), protected (защищенный) и public (открытый). Если указан модификатор private, то поля класса можно использовать только в методах этого же класса. Если указан модификатор protected, то поля класса можно использовать в методах этого класса и его наследников. Если же указан модификатор publ ic, то это поле можно использовать отовсюду.

• Модификатор static. Этот модификатор используется в том случае, когда нужно создать такое поле, которое относилось бы не к объекту класса, а собственно к классу. Это означает создание переменной, которая должна изменяться под воздействием класса, а не объекта.

Например, создадим класс "садовый участок". Предположим, что на этом садовом участке можно сажать только деревья, т.е. создаем объекты "деревья".
Пусть существует также некая переменная, которая отвечает за количество объектов этого класса. Вполне логично, что значение этой переменной нужно хранить не в переменной, которая должна быть доступна для каждого объекта, а в переменной, которая относится к классу, т.е. никакой объект данного класса не может изменить значение этой переменной.

Рассмотрим модификаторы методов.

Модификаторы доступа методов используются так же, как и полей. Модификатор static говорит о том, что данный метод статический и может вызываться только посредством класса, а не объекта. Зачем же нужен такой метод? Предположим, мы создаем очередной объект, который должен получить свой номер из значения статического поля. Кроме того, статическая переменная должна увеличить свое значение на единицу. Разумеется, объект не должен получать доступ к этому методу — доступ к этому методу может только иметь сам класс. Поэтому надо помечать главный метод программы main словом static. Модификатор final применительно к методам будет рассмотрен позднее.

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

Листинг 4.1.
Пример создания простого класса

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

Рассмотрим создание объектов. Можно создать ссылку, которая не будет объектом и будет способна только ссылаться на объект, как на обычную переменную, указав в качестве типа имя класса. Этой ссылке необходимо сопоставить объект, который можно создать с помощью оператора new.

После оператора new ставится имя класса, а в скобках — параметры, если они имеются у конструктора (о конструкторе чуть позднее). Если конструктора нет, то в скобках параметры не указывают. Давайте теперь добавим в исходный класс метод main, с помощью которого создается два объекта (листинг 4.2).

Листинг 4.2.
Создание двух объектов

В языке С++ объект нужно уничтожать с помощью оператора delete.
В языке Java операторы delete нет, а "сборку мусора" обеспечивает виртуальная машина Java (JVM). Если перестать использовать объект в программе, то автоматически удаляется ссылка на него.


Партнеры сайта