undefined

Как создавать объекты

Java Syntax
5 уровень , 4 лекция
Открыта

— Так. С классами мы разобрались в прошлый раз. Сегодня я хочу рассказать тебе, как создавать объекты. Это очень просто: пишем ключевое слово new и имя класса, объект которого хотим создать:

Пример
Cat cat = new Cat();
Reader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream is = new FileInputStream(path);

— Так я это уже слышал.

— Я знаю, поэтому слушай дальше.

— При создании объекта в скобочках можно передавать различные параметры. Об этом я расскажу сегодня, но чуть попозже. Давай рассмотрим класс Cat:

Код на Java Описание
class Cat {
    public String name;
public String getName() { return name; } public void setName(String name) { this.name = name; } }

name – это переменная класса. У нее модификатор доступа public, поэтому она видна везде в проекте.
Метод getName – это getter (произносится гЭттэр), т.е. он возвращает значение переменной-класса name. Имя метода строится по принципу get + «имя переменной с большой буквы».
Метод setName – это setter (произносится сЭттэр), т.е. он используется для присваивания нового значения переменной-класса name. Имя метода строится по принципу set + «имя переменной с большой буквы». В этом методе имя параметра совпадает с именем переменной класса, поэтому мы ставим this перед именем переменной.

— А это что еще за геттеры и сеттеры такие?

— В Java принято скрывать переменные от доступа из других классов. Обычно переменные, объявленные внутри классов, имеют модификатор private.

— Чтобы другие классы могли менять значения таких переменных, для каждой из них создается пара методов: get и set. Задача метода get вернуть текущее значение переменной тому, кто его вызвал. Задача метода set установить новое значение переменной.

— А в чем смысл?

— Если мы не хотим, чтобы кто-то менял значения переменных наших объектов, мы можем просто не писать метод set для него, или сделать его private. Также в этот метод можно добавить дополнительные проверки данных. И если переданное новое значение неверно, то ничего не менять.

— Ясно.

— Т.к. переменных в классе может быть много, то методы get и set обычно имеют в своем имени имя той переменной, с которой работают.

— Если переменная называется name, то методы setName и getName. И т.д. по аналогии.

— Ясно. Понятный, в общем-то, подход.

— Вот тебе еще пара примеров работы с новосозданным объектом:

Шаг Код Описание
1
new Cat();
Создаём объект типа Cat
2
Cat catVaska = new Cat();
Сохраняем ссылку на объект в переменную catVaska, имеющую тип Cat
3
catVaska.name = "Vaska";
catVaska.age = 6;
catVaska.weight = 4;
Заполняем объект данными: имя, возраст, вес
4
catVaska.sleep();
Вызываем метод объекта
5
catVaska.fight(catBarsik);
Взаимодействие объектов.
Комментарии (215)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Anonymous #2288933 8 уровень
1 февраля 2021
Есть 2 варианта записи:

Reader reader = new BufferedReader(new InputStreamReader(System.in));
и

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
В чём разница BufferedReader и Reader?
iDSDDR 10 уровень
28 января 2021
рекомендую к прочтению!
Dmitry Sokolov 12 уровень, Казань
1 декабря 2020
А раньше слово "гЭттэр" ассоциировалось со спорткаром)
Pogrom 7 уровень, Москва
5 ноября 2020
Toxa 10 уровень, Санкт-Петербург
4 ноября 2020
Сказочное объяснение геттеров и сеттеров. Все находится в public, но мы создаем сеттер. Если бы не читал параллельно книгу, то ничего бы не понял.
Бабочка Алушка 17 уровень, Новокузнецк
2 ноября 2020
Билаабо . одержимость ="КАК В ПАСКАЛЕ";
Сергей 29 уровень, Москва
2 ноября 2020
Есть ситуации, когда надо использовать get и set одновременно (кроме проверки данных, передаваемых сеттером)? Ну вот ты объявил переменную и сделал ее private, а потом сделал сеттер и геттер для нее. Так это то же самое, что объявить ее public, нет? (т.е. дать доступ на чтение и запись) Вот если надо разрешить только чтение или только запись, тогда понятно, но вот одновременно и сеттер, и геттер...
Alex Kozhanov 7 уровень, Одесса
1 ноября 2020
catVaska.fight(catBarsik);🤣😆😂 очень смешно, красавчиГи
Зубцов Денис Владимирович 5 уровень, Харьков
18 октября 2020
Кто еще не смотрел вот в дополнение: https://www.youtube.com/watch?v=zf3lDojNxlA&list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak&index=18
Роман Ходаков 7 уровень, Barnaul
26 сентября 2020
"Задача метода get вернуть текущее значение переменной тому, кто его вызвал" Тааааак. стопе, стопе.... Я тут сижу один в комнате, печатаю код, учусь, а у меня кто-то переменные ворует? Сидишь такой: - Оппа, па, а это переменная не моя, я ее не вызывал, кину ка я этому диванному хакеру get, пусть скушает свою переменную!... Так чтоль?)) А если комп отключен от любой интернет и локальной сети, и вообьсче в комнате я один? Get я почтой России чтол возвращать буду?) Как узнать тогда кто мои переменные вызвал? Их вызывают по телефону? Аааааааааа....