Классы и объекты

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

Шаблоном или описанием объекта является класс, а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке — наличие двух рук, двух ног, головы, пищеварительной, нервной системы, головного мозга и т.д. Есть некоторый шаблон — этот шаблон можно назвать классом. Реально же существующий человек (фактически экземпляр данного класса) является объектом этого класса.

Класс определяется с помощью ключевого слова сlass:

Вся функциональность класса представлена его членами — полями (полями называются переменные класса) и методами. Например, класс Book мог бы иметь следующее определение:

Таким образом, в классе Book определены три переменных и один метод, который выводит значения этих переменных

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

Здесь у класса Book определено два конструктора. Первый конструктор без параметров присваивает неопределенные начальные значения полям. Второй конструктор присваивает полям класса значения, которые передаются через его параметры.

Так как имена параметров и имена полей класса в данном случае у нас совпадают — name, author, year, то мы используем ключевое слово this. Это ключевое слово представляет ссылку на текущий объект. Поэтому в выражении this.name = name; первая часть this.name означает, что name — это поле текущего класса, а не название параметра name. Если бы у нас параметры и поля назывались по-разному, то использовать слово this было бы необязательно.

Мы можем определить несколько конструкторов для установки разного количества параметров и затем вызывать один конструктор из другого:

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

Создание объекта

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

После объявления переменной Book b; эта переменная еще не ссылается ни на какой объект и имеет значение null. Затем мы создаем непосредственно объект класса Book с помощью одного из конструкторов и ключевого слова new.

Инициализаторы

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

Программа с классами

Теперь используем класс в программе. Создадим в Intellij IDEA новый проект File => New Project. Назовем его, например, BookStore:

Intellij IDEA create new project
Intellij IDEA create new project

Итак, по умолчанию у нас в проекте создается папка src, давайте в ней создадим пакет bookstore и класс Book. Для этого нажмем на пакет bookstore правой кнопкой мыши и в появившемся контекстном меню выберем New-> Package…

Затем по аналогии создадим наш класс. В окне создания нового класса назовем его Book, а остальные опции оставим по умолчанию. После этого в пакет bookstore будет добавлен новый класс:

Intellij Idea clean project
Intellij Idea clean project

Изменим автоvfnbxtcrb сгенерированный код в файле Book.java на следующий:

Теперь перейдем к коду файла BookStore.java и изменим его следующим образом:

Если мы запустим код на выполнение, то консоль выведет нам информацию о книгах b1 и b2:

Книга ‘Война и мир’ (автор Л. Н. Толстой) была издана в 1869 году
Книга ‘неизвестно’ (автор неизвестно) была издана в 0 году

 

 

Подписаться
Уведомлять о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x