package com.javarush.task.task05.task0511;
/*
Создать класс Dog
*/
public class Dog {
String name; // тут понимаю, создаю параметры класса.
int height;
String color;
public void initialize(String name){
this.name = name; // А вот что я сделал этой строкой - не понимаю. Присвоил параметру name... эээ... Что я ему привоил? Его же, name? А нафига? Что это даёт? Аналогично с последующими инициализаторами.
}
public void initialize(String name, int height){
this.name = name;
this.height = height;
}
public void initialize(String name, int height, String color)
{
this.name = name;
this.height = height;
this.color = color;
}//напишите тут ваш код
public static void main(String[] args) {
}
}Виталий
1 уровень
Сделать - сделал, а вот что именно сделал - не понимаю.
Решен
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Виталий
26 июня 2020, 19:07
Правильно ли я понимаю, что строкой this.name = name; я заношу в поле name объекта значение name?
То есть, могло быть this.name = "Вася"?
0
Sir_Ejik
25 июня 2020, 11:59
Создавая класс Вы создаете некий макет.В данном случае макет по которому вы будете позднее создавать( описывать,классифицировать) конкретных Dog например создавая базу данных. void initialize() - это методы для инициализации значения переменных класса. Когда вы будете создавать конкретные экземпляры класса ( конкретных new Dog() : Dod dog1 = new Dog()) для их занесения в БД. Вы сможете создать их либо имея только name - кличку, или только кличку и рост name,height, или все три параметра.Поскольку Dod dog1 = new Dog()) без указания параметров - это вообще собака, у нее нет ни имени, ни какого то иного параметра по которому мы можем её идентифицировать хоть как то.И следовательно её внесение в БД теряет смысл.
Это все равно как если бы Вам предложили угадать число.Любое число которое Вы назовете - будет верным. Если вам предложат угадать целое положительное - это сужает диапазон, если это целое положительное меньше 10, это еще более конкретно, а если при этом число нацело делится на 7 - вы дадите 100% правильный ответ.Так и инициализация переменных в классе.Чем больше их инициализировано тем точнее описан экземпляр.Ведь "Тузиков" в стае может быть много, но это будут разные "Тузики", но при том что клички одинаковые они будут еще чем то отличаться.Вот как то так. Мое сугубое понимание вопроса.На истинность не претендую.Толькобукавмнога.
0
Анастасия
24 июня 2020, 18:40
Я так понимаю, вы работаете без IntelliJ IDEA. Он бы дал вам ответ на этот вопрос во время работы, т.к. подсвечивает используемые переменные.
Обращение к this.name - это обращение к переменной name самого класса (та, которая лежит в теле самого класса, а не какого-то метода внутри класса).
Строкой this.name = name вы задаете переменной класса в нашем случае Dog новое значение, равное переменной name метода initialize, которая является аргументом метода и была там объявлена -> initialize(String name), где String - тип переменной, name - имя переменной, для этого метода (и только для него).
0
Ksenia MarioMaster
24 июня 2020, 16:54
тут не видно усієї картини, і задача поки стоїть справді повторити.
виведе
name = поле методу
this.name = поле класу
0
Виталий
24 июня 2020, 17:54
То есть, понимание должно будет прийти позже? С последующими лекциями?
0
Ksenia MarioMaster
24 июня 2020, 18:47
ну не настільки, що вже "должно". я помічаю що не завжди розуміють принципи ооп навіть далі. більш глибоко ця тема десь на 11му + рівнях буде.
Я так уточнила, тому що в цій задачі не дуже зрозуміло як практично воно використовується. Хоча, мабуть, мій код теж не додав ясності)))
Якщо сказати грубо по задачі: коли ти створюєш змінну в методі з такою ж назвою, як поле в класі то по назві буде відзиватись змінна методу, а поле класу буде ігноруватись.
0
Ksenia MarioMaster
24 июня 2020, 18:50
цю задачу (я скоротила) можна без this написати так:
0
Виталий
24 июня 2020, 16:01
Пока делал это задание, почувствовал себя попугаем. Повторить - повторил, а смысл - кто его знает?
0
Bwon
24 июня 2020, 16:18
Когда ты используешь ключевое слово this (в данном случае this.name) ты под этим выражением подразумеваешь поле класса, которые ты создал выше (String name). А вторая переменная name - это уже переменная из аргумента метода (вот отсюда initialize(String name). Таким образом ты переменной поля класса присваиваешь значение переменной, переданной в аргумент метода.
Вот здесь подробнее https://www.youtube.com/watch?v=sPPaDe_5fcQ&list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak&index=19 0