Попробовал реализовать, есть сомнения. Посмотрите фрагменты кода, плиз.
Изначально имеем классы CharacterHero и CharacterEnemy, унаследованные от общего класса Character.
Поскольку в модели персонажей мини-игры есть общие свойства и методы для героя и противника, а есть специфические, создаю модели персонажей для мини-игры в похожей структуре:

Код AS3:
public class BattleCharacterModel // Модель для общих свойств и методов
{
internal var character:Character;
public function BattleCharacterModel (newCharacter: Character)
{
character = newCharacter;
}
}
public class BattleCharacterModelHero extends BattleCharacterModel // Класс для модели героя
{
public function BattleCharacterModelHero (newCharacter: CharacterHero)
{
super(newCharacter);
}
Беда в том, что после создания экземпляров при попытке обратиться к свойствам, установленным для CharacterHero, через _heroModel.character.'имя свойства', получаю ошибку. Мне это кажется странным, т.к. установленная типизация исключает записи в переменную character класса BattleCharacterModelHero значения иного типа, кроме CharacterHero.
Как итог пока нашёл решение с заданием переменных Character непосредственно в классах-наследниках, но что-то меня в этом варианте смущает. Пока правда, не понимаю, что контретно. Вот так получилось:

Код AS3:
public class BattleCharacterModel // Модель для общих свойств и методов
{
public function BattleCharacterModel ()
{
}
}
public class BattleCharacterModelHero extends BattleCharacterModel // Класс для модели героя
{
internal var character: CharacterHero;
public function BattleCharacterModelHero (newCharacter: CharacterHero)
{
character = newCharacter;
}