Объявление класса. Члены класса и создание объектов класса. Модификаторы доступа.. Модификаторы 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|