В этом уроке(лекция 2) речь идёт о сложных типах. К примеру int—простой тип и т.д. Но тут же говорят, что когда мы пишем класс мы создаём новый сложный тип. Но как? Вот пример:
public class Solution {
public static void main (String[] arts){
int a = 2;
}
}
int—простой тип. Но тогда значит, что класс Solution—сложный. То есть только переменные бывают сложных и простых типов? А классы? А если классы тоже бывают различных типов—то как понять, что он простого типа или сложного?
P.S. Сразу извиняюсь за сумбур, так как не очень представляю себе полную картину(
Кот
39 уровень
Переменная или класс?
Решен
Комментарии (16)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Кот
18 февраля 2021, 19:47
Спасибо всем за ответы. Очень помогло понятт эту тему. Еще раз спасибо)
0
Wladyslaw Java Developer Master
18 февраля 2021, 18:33
Тип данных - более широкое понятие, оно выходит за рамки джавы. Инт - это тип данных, флоат и дабл тоже. В контексте джавы - они примитивные, то есть хранят непосредственно значение. Остальные, помимо восьми примитивных - ссылочные. Они хранят ссылку на объект, а не сам объект. Но это в рамках джавы. Когда тебе говорят что создавая класс - ты определяешь тип имеется ввиду тип данных как понятие CS. Ты описываешь какой-то тип, его структуру, возможные операции с ним. Все переменные таких типов будут ссылочными а рамках джавы. Сам этот тип будет агрегатным, не примитивным, потому что в себе содержит другие типы, примитивные или нет, имеет видимую структуру.
0
Кот
18 февраля 2021, 18:43
Так а что тогда объект? Почему допустим это класс:
public class Cat{
public static void main(String [] args){
String name;
name = "barsic";
System.out.println(name);
А если заменить String name на Cat barsic = new cat(); То это объект. Или объект это что получается из класса при компиляции?
Я чет совсем запутался(
0
Wladyslaw Java Developer Master
18 февраля 2021, 18:48
Класс - это "чертеж". Он описывает структуру будущих объектов этого класса. По этому чертежу ты уже создаёшь объекты - используя ключевое слово new. Класс - один, а объектов этого класса может быть множество. И у каждого будет свое состояние, которое ты описал в классе.
И String и Cat - классы. Из них ты можешь создать объект и положить ссылку на него в ссылочную переменную.
В итоге - имеешь объект в памяти, на который ссылается переменная с левой стороны выражения.
Так как у тебя написано - есть ссылка на строку и есть объект строка. Просто у строк есть особый синтаксис и их не обязательно создавать через new. Когда ты пишешь что-то в кавычках создаётся объект типа String. Ну, пока что можешь так думать.
0
Кот
18 февраля 2021, 18:49
Тогда в чем назначение объекта?
0
Wladyslaw Java Developer Master
18 февраля 2021, 18:52
Инкапсулировать в себе состояние и поведение конкретной сущности. Принцип ООП же. Мы, как бы, можем моделировать объекты реального мира в программе.
Ну вот есть у тебя в реальности такое понятие - кот. Это класс, в терминах ООП. Но у тебя же в городе, например, не один кот - их много, но все они - коты. Вот это - объекты.
0
Кот
18 февраля 2021, 18:57
То есть что бы не писать много одинаковых классов, создаются объект который как бы много классов в одном?
0
Wladyslaw Java Developer Master
18 февраля 2021, 19:02
Нет.
Объект не может существовать без класса. Объект имеет тип. Этот тип нужно описать, перед тем как создавать объект этого типа. Описывают типы в джаве посредством классов.
Описали класс - потом уже создали объект(ы) этого класса(типа) - потом с объектом(ами) работаем.
0
Кот
18 февраля 2021, 19:06
так а смысл объекта если мы все уже описали в классе?
0
Wladyslaw Java Developer Master
18 февраля 2021, 19:10решение
Класс - это чертеж.
Если продолжать аналогию на кошках - в реальности есть такое понятие как кот. Но оно не указывает на какого-то конкретного кота. Просто есть такой вид животных. Ты не можешь его погладить, дать ему пожрать и он не может тебе насцать в тапки. Это просто понятие в человеческом сознании которое описывает вид животных.
И есть объект.
Конкретный дворовой кот Василий который сидит на лавке и с которым ты можешь взаимодействовать.
А есть ещё другой кот - и у каждого свое состояние. Один рыжий, другой черный. В классе ты опишешь что у всех котов есть свойство - цвет. А у каждого конкретного объекта этот цвет будет свой.
+2
Кот
18 февраля 2021, 19:21
хорошо. Более менее понятно. То есть к примеру, если пишу компьютерную игру и мне нужно написать в ней кота, которого зовут барсик. То я могу сделать вот это:
public class Cat {
int age;
String name;
public.static.void.main(String [] args) {
Cat barsic = new Cat( );
barsic.age = 3;
barsic.name = "Барсик";
}
}
То есть создал конкретный объект кота barsic(new Cat); Но на основе класса Cat, я могу создать объект кота Василия, кошки Нюрки. И так продолжая до бесконечности?
0
Wladyslaw Java Developer Master
18 февраля 2021, 19:23
Вот. Теперь так.
Соответственно, если тебе нужен будет к барсику ещё и Мурзик - ты просто создаёшь ещё однм объект того же класса, но с другими свойствами
0
hidden #598481
18 февраля 2021, 19:23
Примерно так, да.
Создал разных котов, сколько угодно, у каждого свои имя-возраст.
Еще в классе описаны методы, эти методы - это функции (действия), которые могут исполнять созданные объекты.
0
Wladyslaw Java Developer Master
18 февраля 2021, 19:32
barsic - имя переменной.
new - ключевое слово, которое позволяет вызвать конструктор класса который указан после new.
Пока что можешь читать это как "новый объект класса такого-то".
0
Кот
18 февраля 2021, 18:25
Не понял. Класс состоит из метода(-ов), так причем здесь переменные?
0
Александр Фоменко
11 февраля 2021, 18:48
ПРОСТЫЕ(ПРИМИТИВНЫЕ)
В Java есть 8 примитивных типов, которые делят на 4 группы, вот они:
Целые числа - byte, short, int, long.
Числа с плавающей точкой (иначе вещественные) - float, double.
Логический - boolean.
Символьный - char.
Все остальное - Ссылочные типы(СЛОЖНЫЕ) - классы
0