Возможно, это плохая практика, но я все равно плохо разбираюсь в разработке программного обеспечения (я уверен, что этот вопрос задавали бы раньше, но я не могу найти правильную терминологию) ... Во всяком случае, это просто еще одно любопытствоя бы хотел ответить.
Итак, я работал так, что я набираю переменную базового класса для типа Object или Sprite или чего-то подобного, чтобы в моих подклассах я мог создавать свои собственные классыв них и хранить его.И когда я обращаюсь к нему, я просто приводил эту переменную, чтобы убедиться, что у меня есть доступ к методам.
Возьмите этот пример, чтобы вы знали, о чем я говорю:
public class BaseClass
{
protected var the_holder_var:Object;
public function BaseClass()
{
//Whatever abstract implementation here...
}
}
Теперь, мои подклассы этого базового класса обычно используют интерфейс, но для простоты я просто напишу это без него.
public class AnExtendedClass extends BaseClass
{
public function AnExtendedClass()
{
//Instantiate my own class into the base class variable
this.the_holder_var = new ACustomClassOfMine();
//Then I can use the 'hackish' getter function below to
//access the var's functions.
this.holder_var.somefunction()
}
private function get holder_var():ACustomClassOfMine
{
return this.the_holder_var as ACustomClassOfMine;
}
}
Это работает, и я уверен, что это вызовет некоторую нехватку ppl (я иногдасъеживаться тоже).Итак, теперь мой вопрос, есть ли способ переписать / перепечатать этот базовый var в моем расширенном подклассе?
вроде как:
public class ExtendedClass extends BaseClass
{
//Not possible I know, but as a reference to see what I'm asking about
//Just want to change the type....
override protected var the_holder_var:ACustomClassOfMine;
public function ExtendedClass()
{
//Then I can forget about having that hackish getter method.
this.the_holder_var = new ACustomClassOfMine();
this.the_holder_var.somefunction();
}
}
Я думал о наборе большей части моей базыклассовые переменные, которые я использую в качестве держателей в качестве типа * и перепечатываю их по мере расширения класса.(Я мог бы использовать это здесь, но да ...) Мысли?Комментарии?Идеи?