![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Вы серьезно? Такие вопросы исчезают после первой нормальной книги об ООП или даже статье.
Цитата:
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
1.
Цитата:
Цитата:
Цитата:
Еще раз. Кастинг не меняет класс объекта. Он проверяет, можно ли использовать объект как определенный Тип данных, и возвращает null, если нельзя (как в Вашем примере). Другими словами, если в массив из первого примера сложить экземпляры другого класса, они не будут кастоваться в MapObject, as вернет null и Вы получите ошибку. Класс это то, чем объект "является" сам по себе. А тип это то, как он используется в текущем контексте. Это может быть реальный класс объекта, любой из его супер-классов и любой из его Интерфейсов. Но никак не любой класс, который взбредет в голову.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Какая разница между этими двумя понятиями? По мне это одно и тоже.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Я лично тоже ничего б не понял из обьяснений Wolsh %) По-моему класс может вполне употребляться в смысле тип и наоборот. Обьект (какого-то класса или обьект какого-то типа) можно говорить в смысле переменная/экземпляр класса.
Про конвертацию лучше на примере. var Name:String = (new Sprite()).toString();//это конвертация в тип String, Sprite не имеет никакого отношения к Sprite, при конвертации создается новый экземпляр класса/типа String. trace(Name); //конвертация из типа в тип существует достаточно редко, в основном в строку =) var ObjectSprite:Object= new Sprite(); var ObjectDO:DisplayObject = ObjectSprite as DisplayObject;//не null, новый обьект не создался, это наш спрайт, это приведение. Привести к базовому классу можно всегда var ObjectSameSprite:Sprite = ObjectSprite as Sprite;//не нулл, приводим var ObjectMC:MovieClip = ObjectSprite as MovieClip ;//null, Sprite не приводится к MovieClip //попробуйте заменить new Sprite() на new MovieClip
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
-De-, это все понятно. В данных примерах Sprite яв-ся потомком класса DisplayObject. Вы объясните вот что, сама операция as меняет тип переменной или же нет. Т.е.
поменяет ли тип переменная msg на тип C? Если да, то только в том случае если C яв-ся подтипом типа B? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Не меняет, а только приводит.
Конструкция Цитата:
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Цитата:
Такого быть не может. MovieClip extends Sprite, а не наоборот. Что вы подразумеваете под словом приводит. Не понятно. Дайте какой-нибудь синоним данного слова. Если msg as C не меняет тип C, то это означает что переменная msg сохраняет тип B, и получается что строчка msg as C проводит проверку яв-ся тип переменной msg супертипом для C. Последний раз редактировалось goldlider; 14.11.2011 в 15:11. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|