PDA

Просмотр полной версии : наследование статических проперти


kia007
21.08.2008, 22:55
всем привет!
Я так экспериментальным путем понял что статические проперти нельзя наследовать верно??
в связи с этим вопрос:
как можно в одном месте(а не в каждом классе) указать проперти сразу
для нескольких классов?? Или наименьшими усилиями сделать что нить подобное?

etc
21.08.2008, 23:10
Вас непонятно.

wvxvw
21.08.2008, 23:16
всем привет!
Я так экспериментальным путем понял что статические проперти нельзя наследовать верно??
Ну, до сих пор понятно =) Нет, нельзя наследовать - статические свойства, это свойства класса, а не объекта класса.

kia007
22.08.2008, 12:14
я понимаю что это свойство класса....

Ну наверное то что мне надо сделать нельзя...а надо вот что:
у меня есть несколько классов и для каждого класса нужно определить проперти Type = 1(т.е. все классы имеют тип равный единице). И хотелось бы не определять тип для каждого класса, а определить тип в базовом классе - это первое. А второе- хотелось бы иметь возможность проверить тип через класс не создавая объект.
Т.е. по сути надо чтоб унаследовалось и статическое свойство базового класса, что не возможно.
А нужно мне это затем что помимо одного набора классов есть другой набор классов с типом Type=2. Я хотел его унаследовать от другого базового класса со статическим проперти Type=2.

Надеюсь теперь все понятно.. :)

ulik
22.08.2008, 13:06
kia007 ответ в примере:
package
{
public class ItemManager
{
public static const FAMILY_ID:String = "9Ax5er";
}
}

package
{
import ItemManager;
public class Item
{
public function Item()
{
trace(ItemManager.FAMILY_ID);
}
}
}
зы: вам в пред нужно задавать вопросы корректнее.

Felicast
22.08.2008, 18:21
2 ulik: покажите мне в вашем примере наследование?

etc
22.08.2008, 18:49
Felicast, нигде. Статические свойства не наследуются, об этом ещё автор темы сказал.

Яски
22.08.2008, 20:11
А так?

class Base1 {}
class Instance1 extends Base1 {}
class Instance2 extends Base1 {}
class Base2 {}
class Instance3 extends Base2 {}
class Instance4 extends Base2 {}

function getType(class:Class):uint {
if (class is Base1) {
return 1;
}
if (class is Base2) {
return 2;
}
}

kia007
22.08.2008, 21:41
ulik спасибо! :)

Яски
так не пойдет т.к. я не знаю базовые классы и не хочу знать.

Felicast
22.08.2008, 22:05
Felicast, нигде. Статические свойства не наследуются, об этом ещё автор темы сказал.
я и не спорю. просто ulik написал, что ответ в примере, но я его там не нашел.
по теме: а нельзя не хранить переменную с типом, а просто использовать проверку типа:

if (myItem is BaseClass1)
{
...
}
else if (myItem is BaseClass2)
{
...
}

вместо того чтобы хранить для этих целей свою переменную