PDA

Просмотр полной версии : Странности наследования в as3


caseyryan
20.03.2013, 12:16
Никогда не задумывался над этим вопросом, но вот сегодня заметил такую странность, когда у класса нет явного суперкласса, он по идее, неявно наследуется от Object. IS-A тест на принадлежность к Object проходит нормально. Но! При этом нельзя использовать переопределение методов класса Object. В частности, если написать

override public function toString():String {
return "bla-bla";
}

Компилятор будет ругаться на недопустимое переопределение. Так что пишу просто

public function toString():String {
return "bla-bla";
}

и все работает.

Вопрос, почему так? Кто-нибудь в курсе с чем связано такое поведение?

udaaff
20.03.2013, 12:21
Методы класса Object динамически создаются в прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, в подклассе Object вместо переопределения базового класса применяется function toString():String.
.....

caseyryan
20.03.2013, 12:25
Понятно. Спасибо. Странно, что сам этого не нагуглил.

Zebestov
21.03.2013, 21:17
Меня больше раздражает метод init, который всегда подсвечивается как переопределенный, хотя его нигде нет.

gloomyBrain
21.03.2013, 21:30
всегда подсвечивается как переопределенный, хотя его нигде нет

Думаю, что пора тебе поставить нормальный редактор =)

Zebestov
21.03.2013, 21:50
Чем уже FB плох )

caseyryan
21.03.2013, 22:35
Вадим, пиши initialize() ;)

Zebestov
21.03.2013, 22:51
Вот так просто сдаться? Аж бегом!

etc
22.03.2013, 23:15
А у меня не подсвечивает.

Zebestov
22.03.2013, 23:20
public function init():void {}
Слева появляется зеленая стрелочка.

GBee
22.03.2013, 23:27
Вроде жмак по ней приведет к оригинальному методу.

Zebestov
22.03.2013, 23:35
Source could not be found for Object.init in ...

GBee
23.03.2013, 00:58
Круто :о)