|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
ZackMercury
Цитата:
Допустим, ваш класс наследует Sprite. Вызов методов через super. гарантированно вызывает методы класса Sprite. То есть, в таком виде, в каком они реализованы в классе Sprite. Все эти привычные x, y, width, height, addChild() и т.п. — все они относятся к super. А те методы, которые Вы описали в своем наследнике, допустим fuelAvailable — относятся только к this. Кроме того, на практике довольно часто приходится перекрывать (override) сеттеры и геттеры width и height, то есть реализовывать их в наследнике иначе, чем в супер-классе Sprite (чтобы при изменении ширины и высоты наследник самостоятельно решал, что именно у себя "внутри" растянуть, а что переместить без масштабирования — стандартная ситуация для контейнера). Соответственно, у экземпляра появляется ДВА варианта метода — родительский метод класса Sprite, и свой собственный. Первый доступен через super., а второй через this. Так что x (this.x) и super.x могут быть ну очень разными. Сорри за занудство.
__________________
Reality.getBounds(this); |
|
|||||
Wolsh, я посчитал это очевидным.
Так как автор темы под вторым пунктом спросил о обращении к свойствам/методам суперкласса, мне показалось, что он понимает, что значит суперкласс, а что значит текущий класс. Но тем не менее, теперь уж безвариантно он поймёт чем похожи this и super, и чем они отличаются, спасибо.
__________________
There is no thing in this world that is not simple. |
|
|||||
Прочитал главу 29 К.Мук: про документы класса, Связанные классы для символов , Обращение к созданным вручную экземплярам символов ну толком интересного ничего.
Wolsh, то есть класс "В" ничего не знает что находится(объекты) в документе который связан с классом "А" ? |
|
|||||
Например Человек - это класс, а вы - объект, экземпляр класса Человек.
1) this - это ваше внутреннее "я" таким образом this.Name - это вы говорите "Мое имя". А MyClass.Name - это абсурд в данном контексте Человек - Вы. 2) Усложним. Человек содержит общие понятия - 2 ноги, 2 руки. Вы же уникальны, у вас есть, например рентгеновское зрение . То есть вы по сути расширяете класс Человек. Назовем его Зак. Вы к тому же и синглтон, но это потом. Так вот у класса Зак есть описание как работает рентгеновское зрение. И вы теперь, как объект экземпляр класса Зак, а не Человек, можете смотреть им, через метод "посмотреть". Но иногда вам надоедает смотреть на скелеты, и вы используете обычное зрение, как у обычного человека, и делаете это через super.посмотреть(). 3) Со временем о вас узнали, и теперь иногда просят поглядеть болячки (паблик метод посмотретьБолячки). И вот вас пригласили в клуб для Человеков. Но вы то экземпляр класса Зак, НО который расширяет класс Человек и вас пропустят. Но как человека вас не могут просить смотреть болячки. И вам придется раскрыться. function club(чел:Человек):void { чел.посмотретьБолячки(); //нельзя (чел as Зак).посмотретьБолячки(); //Зя! } Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Отвечая на вопрос — ну да, конечно же, экземпляр класса В ничего не знает об устройстве класса А. Так же, как кнопка и звезда ничего не знают об экземпляре класса В. Каждый знает только то, что у него "внутри", то что он САМ создал. Иерархия. * А в случае с А – наследником МувиКлипа – еще и делает это на уровне фреймов, а не "в теле класса", из-за чего невозможно бывает в первом кадре обратиться к объектам, которые появятся на пятом кадре.
__________________
Reality.getBounds(this); |
|
|||||
Wolsh, может мне вообще отказаться от клипов, этих фреймов на таймлайне ?
Цитата:
Добавлено через 8 минут Gbee, спасибо конечно но у меня вопрос который я задал ранее ,это если при приведении чел в zack - человек может быть и как человек и как zack ? |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
var man:Man = new Zack(); man.viewXRay(); // -> ERROR (man as Zack).viewXRay(); // -> OK var zack:Zack = man as Zack; zack.viewXRay(); // -> OK Формальное приведение осуществляется вызовом глобальной функции класса без оператора new, например Кастинг является "безопасной" операцией, так как не генерит исключение (Error) в случае неудачи. Если экземпляр не проходит кастинг, то кастинг "молча" возвращает null. Приведение же в случае неудачи сгенерирует ошибку. Очень мало типов на самом деле могут быть преобразованы друг в друга. Мало того, результат такого преобразования не всегда очевиден и предсказуем))
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 06.01.2016 в 12:39. |
|
|||||
Регистрация: Sep 2015
Сообщений: 69
|
А восходящее преобразование тут не сработает?
|
Часовой пояс GMT +4, время: 12:47. |
|
« Предыдущая тема | Следующая тема » |
|
|