Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Объявление класса. Члены класса и создание объектов класса. Модификаторы доступа.. Модификаторы final & static.




Объявление класса.

Чтобы создать свой тип данных, есть определение «класс». Это совокупность объектов, с одинаковыми характеристиками и поведением. Класс – это тип данных. В ООП – это не переменные, а объект.

Внутри любого класса будут присутствовать минимально 3 части:

  • данные – предметная область
  • методы – которые реализуют бизнес логику работы с объектом
  • служебные методы - конструктор

Члены класса и создание объектов класса.

 

Модификаторы доступа.

 

Модификаторы final & static.

Еще одна позиция с т. з. того, что мы будем разбирать – это слово static. Вот у того же main есть static. И всегда возникает вопрос «А писать его или не писать? » и «Надо ли его использовать? ». Я создал систему продаж/закупки. У меня в памяти где-то 100-150 товаров, а еще у меня операции по хранению курс а валют.

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

Попрактикуемся немного. Создадим объект «Точка». Нам нужно будет «Данные», «Методы», «Перегрузка конструктора».

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

А сейчас мы должны добавить в проект новый класс. Будьте внимательны! Вы должны обязательно щелкнуть правой кнопкой мыши на пакете перетянутый бичовкой, выбрать «Новый» и выбрать «Класс Java».

Остается ввести только имя в строке «Имя класса». Все классы принято писать с большой буквы «Point». Нажимаем готово, и проверяем визуально, что они находятся в одном пакете.

Отлично! А теперь этот класс мы будем развивать.

Когда класс генерируется IDE, то он всегда public. Почему? Предполагается, что тип данных делается для всех. Данные, конструкторы, методы. Я пока не буду писать инкапсуляцию, поэтому я напишу int x, y.

Можете предположить, сколько конструкторов будет в этом классе?

Давайте попробуем с двумя конструкторами. Мы сегодня добрые, поэтому public для всех. Имя конструктора с совпадает с именем класса. Мы решили, что конструктор будет с двумя параметрами – не вопрос! Тип параметров ясен – int. Как мы назовем параметр? _x, _y.

Нам нужен какой-то метод. Что можно делать с этой точкой? Ее можно двигать. Поэтому создадим метод «move». Какое возвращаемое значение будет у метода «move». Логично написать void.

 

Ок! Давайте попробуем с этим классом что-нибудь сделать. Мы возвращаемся в main и здесь мы должны что-нибудь создать.

Вывод программы: 9

Вопрос: У нас объектов в памяти 2? Да – p1, p2. Вы можете создать сколько угодно объектов – это ваше дело. А сколько методов «move»? Он один. Методы не тиражируются.

А метод «move» откуда знает, какой объект двигать? Я говорю «двигай» и он двигает объект p1. А почему не p2? Откуда он такой умный? Откуда он знает кого двигать? Давайте думать правильно. Сколько метод «move» получает параметров, когда он вызывается? 2 и +1 скрытый – ссылка на объект с которым он работает. Это ООП. У вас методы – это члены класса. А сколько может быть создано объектов этого класса? – Сколько угодно, а метод одна штука. Поэтому мы всегда должны сказать «Ты работает с этим объектом! ».

Кстати, хочу сразу предупредить, что в ручную конструкторы никто не пишет. Показать как пишут конструкторы? – Смотрите. Я нахожусь внутри класса. Нажимаю Ctrl+Пробел

Есть еще другое применение this. Например, допустим иногда возникает желание сделать людям доброе дело, и сказать: «А вот она точка! А вот она точка! А вот она точка! ». Я сделаю тип возвращаемого значения у метода «move» - Point и через return я верну вот что. Я «Точку» сдвинул и её же через return ссылку на этот объект вернул. Говорю, вот, смотри новая точка. Никаких копий нет, забудьте про это в Java. Вы возвращаете ссылку! return this возвращает себя же.

А в main можно создать такую красоту:

Это возможно, т. к. объект возвращает себя же.

Давайте попробуем написать код с инкапсуляцией.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...