Инициализация переменной в суперклассе. Он не будет инициализирован, пока вы на самом деле не наберете super();
. Вот почему вы всегда должны вызывать super()
, прежде чем делать что-либо еще в конструкторе. Фактически, в некоторых других языках, таких как Java, вызовы super()
разрешены только в качестве первого оператора внутри конструкторов подкласса.
Однако вы должны рассмотреть возможность использования параметра инициализации в своем конструкторе вместо установки значения в объявлении - это более элегантный и поддерживаемый способ сделать то, что вы намереваетесь сделать.
package game
{
public class Vehicle
{
public var myVar: String;
public function Vehicle ( type:String = "vehicle" )
// new Vehicle() traces "vehicle"
{
trace("vehicle: " + type);
myVar = type;
doSomethingWithMyVar();
}
}
}
соответственно.
public function Car ( type: String = "car" )
// new Car() traces "car"
{
super( type );
}
плюс, вы всегда можете позвонить new Car("Porsche");
или что-то в этом роде;)
P.S. На заметку: Соглашения об именах в ActionScript рекомендуют использовать имена, начинающиеся со строчной буквы как для пакетов, так и для методов.