Доброго времени суток! Спасибо разработчикам данного форума, за приятный интерфейс и функционал!
Теперь суть вопроса. Внесите ясность…что происходит…смотрю видео курс…но автор так объясняет…коробочки…ящички…лучше бы говорил где объект, для чего…и почему именно объект…Смотрите есть два файла…
первый файл один содержит код:
public class StudentOrder {
String hFirstName;
String hLastName;
String wFirstName;
String wLastName;
}
второй файл содержит код
public class SaveStudentOrder {
public static void main(String[] args) {
StudentOrder so = new StudentOrder();
so.hFirstName = "Алексей";
so.hLastName = "Петров";
so.wFirstName = "Галина";
so.wFirstName = "Петрова";
long answ = saveStudentOrder(so);
System.out.println(answ);
}
static long saveStudentOrder(StudentOrder studentOrder) {
long answer = 199;
System.out.println("hello My Friend! " + studentOrder.hLastName);
return answer;
}
}
Во втором файле(классе) получается мы создаем переменную so…StudentOrder so = new StudentOrder(); - Здесь что происходит создается объект? или что…не понимаю как это работает…почему объект…если изначально переменная…и дальше я так понимаю мы обращаемся к полям so.hFirstName и тд. этого объекта( Правильно ли я понимаю это?)
Так а с числами или строками почему такой вопрос не возникает?
int a = 42;
тоже ж “изначально переменная”.
Только в случае с объектом в ней будет ссылка на объект, а не сам объект.
То есть несколько переменных могут ссылаться на один объект
StudentOrder so = new StudentOrder();
StudentOrder so2 = so;
so.hFirstName = "Алексей";
System.out.println(so2.hFirstName); // "Алексей";
Просто обычный параметр функции. Как например
a = Math.sqrt(4); // 2
Вместо “объект” можно говорить “экземпляр класса” (instance), может тогда понятнее. То есть класс это как рецепт/шаблон, и по нему можно создать много экземпляров.
Переменная - это имя, которым вы называете участок памяти, в котором находится объект.
Переменную, в которой лежит объект, называют объектом для удобства речи и понимания - вот и все. Ну еще чтоб отличать от простых типов. Потому что переменные простых типов (int, char, double) называют переменными.
new StudentOrder() - это создание объекта, да.
А тут вы говорите, что будете к объекту обращаться so. Вот как с людьми. Если вы в толпе крикните “Эй, ты” - никто же не поймет, к кому вы обращаетесь. А если “Вася” - то повернется только Вася. Единственное отличие - человеку дается имя на всю жизнь, а объекту вы можете давать несколько “имен”, или же забрать у объекта “имя” и назвать им другой объект. Тогда первый объект останется без имени и вы больше не сможете к нему обратиться.
Проиллюстрирую:
StudentOrder Вася = new StudentOrder() - вот мы создали новый объект и сказали, что отныне мы обращаемся к нему “Вася”
StudentOrder Петя = new StudentOrder() - создали еще один объект и будем обращаться к нему “Петя”
StudentOrder Герасим = Вася - теперь мы говорим, что к Васе мы можем обращаться еще и как “Герасим”.
Петя = Вася - а тут мы говорим, что к Васе-Герасиму добавляется обращение “Петя”. Но в программировании не может быть такого, чтоб мы сказали “Петя” - и повернулись два чувака. Поэтому у первого Пети обращение отбирается. Теперь он безымянный. Но он никуда не исчез. Сидит обиженно в углу, занимает оперативную память, и вы не можете ничего с ним сделать.
Передача в параметры функции пусть вас не смущает. С объектами можно сделать все то же, что и с простыми типами.
static long saveStudentOrder(StudentOrder studentOrder)
Интересует вот это строка…а именно параметры метода. Первая это входные параметры…мы передаем этому методу…данные типа StudentOrder. (а точнее я так понял…именно структуру которая находится в файле 1. см.выше) А второй параметр studentOrder - автор видео курса говорит, я к этим данным буду обращаться через это имя. т.е studentOrder не понял вот этот момент. обращение через это имя…в интернете полазил…в основном пишут для метода (параметр 1, параметр 2)…
Это один параметр - вначале указан его тип, а затем внутреннее для метода имя.
А для двух будет что-то вроде (StudentOrder studentOrder1, StudentOrder studentOrder2).
P.S.: если автор курса непонятно объясняет, можно другого попробовать.
Видимо автор через чур упрощает…вот впринципе ссылка на урок смотреть с 7 минуты. Урок номер 6 Ну либо я совсем новичек, не совсем все понимаю. До этого объяснения примитивных типов данных.
И даже не обязательно брать другого вместо первого, можно сразу оба.
Разные авторы по-разному объясняют, добавляют разные детали + при повторении станет понятно то, что пропустил/не понял в первый раз.