这是我的问题的一个非常简化的版本,但应该足以让我解决我的问题。
假设我有 DressingRoom、Person、Hat、Badge 和 Foreman 等课程,并且该应用程序允许您在一个人在更衣室时给他们不同类型的帽子,如果是工头,他也可以获得徽章. 我希望用户成为工头,如果你给他一顶白帽子,如果不是,让他成为一个普通人。
是否可以在 Person 中将某个类设置为其自身的子类,而不必在更衣室类中进行(这很容易做到)。
public class DressingRoom{
public var length:int;
public var occupant:Person;
}
public class Person{
public var name:String;
public var hat:Hat;
public function hatChanged():void{
if (hat.color==0xFFFFFF){
this = new Foreman(name,hat);
}
}
}
public class Hat{
public var size:int;
public var color:uint;
}
public class Foreman() extends Person{
public var badge:Badge;
public function hatChanged():void{
if (hat.color!=0xFFFFFF){
this = new Person(name,hat);
}
}
}