![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
При чтении книги К.Мука возник вопрос.
На стр.56 приведен такой код: package zoo { public class VirtualZoo { public function VirtualZoo() { var pet = new VirtualPet; pet.petName = "Stan"; } } } Я так понял, что при создании очередного объекта переменной экземпляра petName присваивается Stan, т.е. все животные будут иметь имена Stan. А в чем же собственно отличие предыдущего кода от кода описанного ниже ? package zoo { public class VirtualZoo { public function VirtualZoo() { var pet = new VirtualPet("Stan"); } } } Но ведь получается тоже самое, что и код описанный выше. Т.е. создается объект в конструкторе класса VirtualZoo аргумент объекта передается в качестве знач-я параметру метода-конструктора VirtualPet, а параметр конструктора присваивается переменной экземпляра. Из этого следует, что все объекты будут иметь имена Stan. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
разницы в 2х вариантах нет. А имя "Stan" будет иметь только экземпляр, присвоенный переменной var pet, а не все объекты.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
i.o. но ведь переменная pet описана в методе-конструкторе VirtualZoo. Получается, что объект будет вновь создаваться.
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
какой объект? Их тут два. Про который речь?
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Dec 2008
Сообщений: 87
|
goldlider, а что Вас смущает? Мук рассказывает про переменную экземпляра. На примере переменной petName.
Вот создается три объекта VirtualPet, каждый из которых будет иметь собственное значение переменной экземпляра petName |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
i.o. я предельно четко объяснил про какой объект идет речь. Я имел ввиду объект описанный в конструкторе VirtualZoo. Почему у нас два объекта создание объекта идет только в методе-конструкторе VirtualZoo и нигде более.
Bred45 получается тогда и в этом коде создаются три объекта VirtualPet, каждый из которых будет иметь собственное значение переменной экземпляра. В конструкторе VirtualZoo пишем эту строчку: Последний раз редактировалось iNils; 27.11.2010 в 17:53. |
|
|||||
|
советую читать в Муке не только код, но и текст помимо кода. вам на этом примере просто дают такое понятие как класс, как его создать и как с ним работать.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
cleptoman, а с чего вы решили, что я читаю только слова. Я знаю как создавать классы. Проблема была связана с переменной экземпляра. Не понятна была разница между двумя примерами.
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Два, потому что VirtualZoo создает в своем конструкторе VirtualPet. Так что не понятно про какой из этих 2ух объектов вы говорите, уточняйте. Несмотря на то что пример состоит из двух простейших классов, очень сложно понять, что вы вообще пытаетесь спросить. Я вам ответил в посту номер2 на ваш вопрос, но у вас до сих пор какие-то вопросы. Поэтому будьте любезны задавать их максимально понятно, если хотите услышать ответ как можно быстрее.
---- public function VirtualPet(name1, name2, name3) { this.petName = name1; this.petName = name2; this.petName = name3; } ![]() Вы ведь догадываетесь, что this.petName будет всегда равен name3 ?
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
i.o. так значит если бы объект var pet = new VirtualPet создавался в конструкторе VirtualPet, то у нас был бы только один объект ?
public function VirtualPet(name1, name2, name3) { this.petName = name1; this.petName = name2; this.petName = name3; } var pet = new VirtualPet("Stan", "Vlad", "Lena");. И эти имена передаются, как значение для параметров конструктора VirtualPet, name1 = Stan, name2 = Vlad, name3 = Lena. Три объекта - три имени. This указывает на то, что текущему объекту присваивается имя. Последний раз редактировалось goldlider; 27.11.2010 в 21:10. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|