JavaRush /Курсы /Java Syntax /Классные классы

Классные классы

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

— Привет, Амиго!

— Привет, Элли!

— Сегодня я подробно расскажу тебе, что такое классы.

Объяснение номер 1. Начну с аналогии. Все вещи в физическом мире состоят из атомов. Атомы могут быть разных типов: водород, кислород, железо, уран, … Комбинируя такие атомы можно создавать различные молекулы, вещества и предметы.

— Атомы в свою очередь тоже имеют некоторую внутреннюю структуру. Внутри них содержатся электроны и ядро: протоны и нейтроны.

— Да, я имею общее представление об устройстве атомов. Я же робот.

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

— Если рассмотреть программу в целом, то объекты – это блоки, из которых состоит программа. А классы – это типы этих блоков. Блоки разных типов являются объектами разных классов.

— Вроде ясно.

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

— Что-то как-то уж слишком размыто это звучит. Вроде и понятно, но ничего конкретного.

— С точки зрения внутренней структуры, класс состоит из методов класса, которые что-то делают и переменных класса, в которых эти методы хранят различные данные.

— Т.е. если очень просто, то класс – это набор методов?

— Почти, точнее будет сказать, что класс – это группа методов, работающих вместе, и переменные, в которых эти методы хранят различные значения, которыми пользуются сообща.

— Ага. И чтобы создать новый класс нам нужно написать эти методы…

— Да. А также решить, какие общие переменные есть у различных методов, и вынести эти переменные из метода в класс: сделать переменные метода переменными класса.

— Создание класса происходит примерно по такой схеме:

1. Программист решает, какие еще объекты ему нужны.

2. Программист разбивает эти объекты на различные типы в зависимости от того, что они должны делать.

3. Для каждого типа программист пишет свой отдельный класс.

4. В классе он объявляет нужные методы и переменные.

5. В каждом методе пишутся команды, чтобы метод делал то, что хочет от него программист.

6. Класс готов, можно создавать его объекты.

— Круто! Интересная схема. Надо будет запомнить

— Запоминай – пригодится. Подход к программированию, при котором программа разбивается на объекты, называется «Объектно-Ориентированное Программирование (ООП)».

— Java – это классический пример ООП подхода: в Java объектами является всё.

— Изучение Java состоит из двух больших задач: учимся писать свои классы, учимся использовать чужие классы. Сегодня мы начнем с самого простого. Будем учиться писать простенькие классы и, конечно, создавать их объекты. Объекты часто еще называют экземплярами классов. Это синонимы: правильно и так и так.

— Понятно.

— Если подытожить всё, что я сказала, то можно сказать, что класс – это мини программа: набор данных и функции, которые что-то с этими данными делают. Важной особенностью классов является возможность создавать экземпляры этих классов – объекты.

— Для того, чтобы создать объект класса, в коде надо написать «new имя_класса()». Примеры:

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

— У объекта класса есть две интересные особенности:

Первая. Каждый объект класса хранит свою собственную копию переменных класса. Т.е. если в классе объявлены переменные «x,y» и создано 10 объектов такого класса, то в каждом объекте будут свои переменные. Изменение переменных одного объекта не влияет на переменные другого объекта.

Вторая. При создании объекта, в него можно передавать различные параметры. Это так называемые «стартовые значения». Это почти как дать имя при рождении. Многие объекты не могут быть созданы, если в них не передать такие параметры.

— Немного понятно. А что ты говорила про переменные класса?

— У каждого объекта есть его копия данных – переменных класса.

Код на Java Вывод на экран:
Cat cat1 = new Cat();
cat1.name = "Vaska";

Cat cat2 = new Cat();
cat2.name = "Mashka";

System.out.println(cat1.name);
System.out.println(cat2.name);
Vaska
Mashka
Комментарии (223)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
GrandAlexandr Уровень 5
14 января 2026
объяснение мягко говоря очень среднее и невнятное
5 марта 2024
5.03.2024 check, мой уровень 5.
Ultron Уровень 4 Expert
10 января 2024
Cat и Cat() - это одно и тоже правильно? и это класс (создано так = public class Cat {}) cat1 - это объект класса Cat. name - это переменная класса Cat, и объект тоже может с переменным манипулировать Я правильно понял?
Alina Klishyna Уровень 9
12 июня 2024
Cat cat - это ссылка(место, где будет хранится значение в памяти) new Cat() - через "new" мы создаем обьект класса Cat. Эти скобки Cat() означают, что вызывается пустой конструктор(пустой, потому что в скобки мы не заносим параметры) И того получается, что мы создаем ссылку класса Cat в которую заносим обьект через "new" вызывая пустой конуструктор. Насчет name все верно. Это поле класса Cat в которое мы заносим значение.
Dinislam Aminev Уровень 16 Expert
27 января 2023
Ребята, обязательно заходите в комменты. Порой они бывают намного понятнее и информативнее, чем само содержание лекции. Спасибо вам, кто уже прошёл досточно далеко в JR, за то, что возвращаетесь и оставляете, ценные для нас "зелёных", комментарии!!!
SerVit Уровень 9
25 декабря 2021
Про то, что такое объект, читаем здесь
Anonymous #2379257 Уровень 14
8 марта 2021
Пока ещё не совсем понятно я думал что: Cat cat1 = new Cat(); 1. Cat - тип объекта; 2. cat1 - имя объекта; 3. new Cat - имя класса; Но оказалось не совсем так подскажите пожалуйста по 1, 2, 3 - что же это все таки такое?
Владислав Уровень 8
9 марта 2021

Cat cat1 = new Cat();
Cat - Класс, на основе которого создается объект с именем cat1, а = new Cat означает, что для этого объекта выделяется область в памяти и создаётся новая ссылка на эту область.
Justinian Уровень 41 Master
10 марта 2021
(1) Cat (2) cat = (3) new Cat(); 1. Cat - это имя класса, ссылку на экземпляр (объект) которого может хранить переменная cat Имена классов пишутся с большой буквы. 2. cat - это имя переменной. Имена переменной пишутся с маленькой буквы в camelCase, тоЕстьОтделяютсяСловаВотТак, никаких нижних подчеркиваний (они допускаются только для констант, которые пишутся заглавными буквами, но о них позже). Конструкция:

Cat cat 
это объявление переменной, с именем cat, которая может хранить ссылку на экземпляр объекта класса Cat. Если грубо и своими словами. То Cat это тип объекта, который может хранить переменная cat. Джава строготипизированный язык, а значит, мы не сможем поместить в эту ссылку объект типа Human, Dog или Integer к примеру. Только Кота. 3. new Cat() new это оператор создания нового объекта Cat это имя класса, который служит основой для создания объекта (класс это чертеж, объект (экземпляр объекта) это готовое изделие на основе чертежа/штамповки) скобки () это значит что вызывается конструктор - специальный метод, который участвует в создании объекта. О конструкторах будет чуть позже. Итого: Cat cat = new Cat(); Объявляем переменную ссылочного типа с именем cat, которая может хранить Cat, потом создаем новый экземпляр объекта типа Cat, и ссылку на этот новый объект присваиваем этой переменной. А значит, когда мы пишем: cat.meow(); мы говорим компилятору: эй, джава машина, а ну-ка у этого конкретного кота, вызови метод meow. Чтобы замяукал конкретный кот. В Изучаем джава (Head first Java) неплохо расписаны объекты, и базисные вещи.
Dankon Holdes Уровень 7
13 марта 2021
Спасибо за столь подробное и четкое пояснение.
Ultron Уровень 4 Expert
29 декабря 2023
Братан (Justinian) ты мой сенсей! С Уважением!
Кирилл Уровень 11
24 января 2021
Вот лекция по Объектам в Java, может кому пригодиться: https://javarush.com/quests/lectures/questsyntaxpro.level07.lecture03
vol4ok Уровень 2
14 февраля 2021
Пожалуйста, учитесь линковать текст, так удобнее ) Объекты в Java
Igor Sholia Уровень 7
8 мая 2021
обясни ,пожалуйса, двух словах как єто делать
Бабочка Алушка Уровень 17
2 ноября 2020
Создаем класс, пишем в нем методы. - это как чертёж. далее когда создаем новый объект созданного класса( чертежа). то объект создается по заданному чертежу, только параметры класса можно задвать разные. Тк основа одна и та же только параметры разные ( это как все люди имеют схожее строение тела, только все различаются по признакам (рост, цвет волос и глаз)
Тони Уровень 10
20 октября 2020
не совсем понятно, где здесь объект а где класс?: InputStream is = new FileInputStream(path);
Михаил Уровень 8
21 октября 2020
Объект is класса FileInputStream.
Тони Уровень 10
22 октября 2020
т.е. получается так? А первый "Сat" что означает?
Михаил Уровень 8
24 октября 2020
Это как раз название класса. А вот new Cat() объявляет этот новый объект, который назван cat.
Vigdan Al-Maamary Уровень 17
21 ноября 2020
Cat cat = new Cat(); С начала резервируешь в памяти место для объекта класса Cat (Cat cat) а также создается переменная (cat) в которой будет хранится ссылка (адрес места объекта в памяти) Далее (new Cat();), создаётся объект класса Cat и хранится он в зарезервированной памяти, а ссылка на него передается (=) в переменную (cat). Как-то так :)
Рустам Уровень 10
22 ноября 2020
Спасибо за пояснение, стало в разы понятнее)
LuneFox Уровень 41 Expert
21 декабря 2021
Тип ссылки. Может быть и так:
 
Animal cat = new Cat();
 
Но только если Cat наследуется от Animal.
Arslan Уровень 6
16 октября 2020
То что я понял из изученного: Основной сущностью в ООП являются объекты и классы(объектов). А написание программы по сути сводится к реализации следующих пунктов: 1. Построение шаблонов, называемых классами, для всех однотипных объектов путем описания всех данных(характеристик объекта определяющих его состояние) и всех обработчиков этих данных называемых методами(функционал объекта меняющий его состояние). 2. Создание объектов определенных типов по соответствующим шаблонам(классам). 3. Реализация логики взаимодействия созданных объектов между собой и с пользователем(человеком).
Aleksandr Уровень 12
17 октября 2020
Штука в том, что класс -- это и есть объект. В Java если копнуть все классы наследованы от объекта, это как бы дописывается виртуально, когда ты откомпилируешь класс. :)
11 декабря 2021
Класс это не объект. Да, все классы наследуются от Object. Но Object - это класс, а не объект. Object obj = new Object() -> здесь объект - это obj, а вовсе не Object. Автомобиль - это класс. А лада калина соседа и городской автобус - объекты этого класса. Животное - это класс. А кошка Мурка и собака Бобик - объекты этого класса. Object - это класс. А любой объект, созданный в вашей программе - объект этого класса.