Cat cat = new Cat();
Dog dog = new Dog();
Fish fish = new Fish();
Woman woman = new Woman();//созданы объекты и их ссылки занесены в переменные
cat. owner = woman;
dog. owner = woman;
fish. owner = woman;//каждому животному дан собственник
Откуда берется owner??? Разъясните от А до Я. Задачу решил, но до конца не понял....Плиз.Andrey Paskin
7 уровень
Откуда берется owner??? Разъясните от А до Я. Задачу решил, но до конца не понял....Плиз.
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей
9 января 2018, 19:39
public static class Fish {
public Woman owner;
}
public static class Woman {
}
Здесь есть 2 класса - Fish и Woman.
У класса Woman нет ни одного поля.
А вот у Fish есть поле owner. При чем в данное поле класса Fish можно занести данные типа Woman.
В принципе, вместо 'public Woman owner' могло быть 'public int age'. В этом случае у класса Fish было бы целочисленное поле 'age' (возраст). Этот вариант уже проходили и он не должен вас смутить. Аналогия вроде как прослеживается)
И еще, несколько упрощенно, но должно помочь в понимании. Сама программа это все, что идет в фигурных скобочках после метода main, здесь все выполняется последовательно (построчно). Все методы вне этих скобок - программа "заглатывет" одним куском и ей не важно в каком порядке идут методы.
PS в cat.owner лучше убрать пробелы. Ни на что это не повлияет, но просто не принято. В Idea "причесать" код можно нажав ctrl+alt+L
И не стоит паниковать. ИМХО дойдя до момента когда вообще ничего не понимаешь и решаешь методом "тыка" - вернитесь назад, перечитайте лекции и прорешайте заново примеры. Все в голове устаканится.
+6
Ярослав Java Developer Master
28 декабря 2017, 21:05полезный
Потому что в классах Cat, Dog, Fish есть переменная owner типа Woman. Операция точка - обращение к структуре объекта, к его внутренним полям, потому мы просто получаем доступ до переменной owner, а потом присваиваем ей ссылку на созданный объект woman.
Woman - название класса, класс - логическое описание, шаблон, мы не можем конкретному объекту присвоить ссылку на шаблон какого-то класса.
Fish.owner - нельзя, потому что Fish - это логическое описание, шаблон, класс, у него нет переменной owner, у него есть описание этой переменной, и при создании объекта класса Fish, он получает переменную, но не сам класс (исключение: если бы owner была статической переменной).
+7
Andrey Paskin
28 декабря 2017, 20:22
почему не Fish.owner = Woman или fish.owner = Woman? Синтаксис с заглавной. Что только через ссылочные переменные можно обращаться?
0
александр
28 декабря 2017, 20:50
как я понимаю: Cat - это все коты(вид животного) в общем(у всех котов на земле owner не woman),
cat - это имя конкретного кота. например Cat вася = new Cat(); у васи owner = woman(у конкретного кота васи).
+8
MaxМузыкант, начинающий звук в TequilaCat Records
8 сентября 2020, 19:33
Я всего 2ого уровня так , что поправьте меня если , правильно ли я понял:
Маленькая буква потому ,что Woman это имя класса, шаблона женщины =) , а woman это сама женщина (экземпляр класса/шаблона/объект класса) . Так вот хозяином кота же не может быть Woman (шаблон) хозяином кота является woman (сама женщина, сделанная по чертежу Woman)
0
ГоффMaster
8 сентября 2020, 20:31
Примерно так. Нужно только добавить, что заглавные и маленькие буквы в названиях - это некая условность, неписанная договорённость, что имена классов начинаются с заглавной, а имена переменных и методов - с маленькой. Этой негласной договорённости надо следовать, но в самом языке джава это не регулируется никак. Просто так принято.
Есть и другие негласные договорённости, например, имена констант пишутся всеми заглавными буквами.
https://comaqa.gitbook.io/java-automation/stil-napisaniya-koda/konvenciya-imenovaniya
0
Андрей Гейкер
28 декабря 2017, 20:19
Owner берется с классов (Fish,Dog,Cat).
0