Цитата:
|
там другой момент мне не очевиден, какой метод вызовется без этого super
|
Вызовется переопределенный без вопросов.
Вот у меня зато вопрос возник. Разве нельзя использовать super в классе, который не наследуется ни отчего (или extends Object)?
Вот примерчик, который выдает рантайм ошибку. Может что неправильно делаю?

Код AS3:
var _b:ClassB = new ClassB();
trace( "_b.methodA(): " + _b.methodA() );
trace( "_b.methodB(): " + _b.methodB() );
trace( "_b.methodC(): " + _b.methodC() );
trace( "_b.methodD(): " + _b.methodD() );
ClassA.as

Код AS3:
package
{
public class ClassA //extends Object
{
public function ClassA()
{
//super();
}
public function methodA():String
{
return "ClassA::methodA()";
}
public function methodB():String
{
return methodA();
}
public function methodC():String
{
return this.methodA();
}
public function methodD():String
{
return super.methodA();
}
}
}
ClassB.as

Код AS3:
package
{
public class ClassB extends ClassA
{
public function ClassB()
{
super();
}
override public function methodA():String
{
return "ClassB::methodA()";
}
}
}
Цитата:
_b.methodA(): ClassB::methodA()
_b.methodB(): ClassB::methodA()
_b.methodC(): ClassB::methodA()
ReferenceError: Error #1070: Method methodA not found on Object
at ClassA/methodD()
at test_fla::MainTimeline/frame1()
|
С одной стороны понятно, что в базовом классе нет такой функции, но с другой то - мог бы FP и догадаться что, нужно вызвать ту, которая объявлена в самом начале.