![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Добрый вечер
Помогите пожалуйста. Делаю первые шаги в создании своих классов, и сейчас столкнулся с наследованием Мне надо переопределить некоторые функции родительского класса. Я прочитал много материала про это не , некоторые моменты не пойму public class MenuItem extends Sprite { public function MenuItem(title:String) { public class SubItem extends MenuItem { public function SubItem(title:String) { 1)как мне прописать, чтобы дочерний класс применял в свой конструктор, конструктор родителя? 2)И на будущее, если мне надо будет переопределить конструктор родительского, как правильно это сделать? также при компиляции флеш ругается на переменную в переопределяющем методе. _titleText обозначена приватной переменной (до конструктора класса). Что тут не так? |
|
|||||
|
.
|
Конструктор надкласса сам вызовется, можно сделать это явно как super() или неявно, опустив эту инструкцию. Компилятор сам сделает в байткоде вызов super(); Переопределить конструктор как он есть невозможно.
А где вы "container" определяли? |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
это в классе родителе до конструктора private var container:Sprite = new Sprite(); private var _titleText:Sprite; private var _title:String; Attempted access of inaccessible property _titleText through a reference with static type SubItem. Attempted access of inaccessible property _title through a reference with static type SubItem. такое ощущение что переменные не наследовались. Но из прочитанных материалов, говорилось что они передаюттся |
|
|||||
|
Приватные переменные не будут доступны в подклассах. Если хотите что бы переменная была доступна в наследниках, используйте protected вместо private.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
так, переделал. А public наверное и так наследуются да?
еще 1 ошибка, при компиляции метод дочернего класса override public function addItem(item:SubItem):void { item.y = 28 * container.numChildren; var item4_1:SubItem = new SubItem("1"); var item4:MenuItem = new MenuItem("1st") stage.addItem(item4); item4.addItem(item4_1); //Incorrect number of arguments. Expected 0. // на первую строчку вот как раз идет связь с первым вопросом. В дочернем классе я не ставил конструктор именно класса SubItem. получается там срабатывает конструктор от родителя. Но тем не менее выстреливает эта ошибка Последний раз редактировалось pomuс; 20.01.2013 в 21:15. |
|
|||||
|
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
спасибо за помощь!
Если кто то столкнется такой же загвоздкой, то вкратце скажу: у классса ребенка также должен обозначатся конструктор. Если нужно просто скопировать конструктор в родителя, то конструктор ребенка можно оставить пустым. для переноса нужного параметра в конструктор родителя, надо в конструкторе ребенка указать super(parametr); а сама форма конструктора должна быть идентична родителськой |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|