Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизИмитация множественного наследования Найти похожие ветки
← →
Ш-К (2004-05-07 10:27) [0]Есть два класса:
TItem = class;
...
end;
TList = class(TItem);
FItems: array of TItem;
...
end;
Классы описывают работу с деревьями, но дело не в деревьях.
Дело вот в чем. Создаю потомков от классов.
TMyItem = class(TItem);
...
end;
TMyList = class(TList);
...
end;
TMyList ничего не знает о TMyItem, а мне надо чтобы TMyList мог наследовать функциональность и TMyItem, как это реализовано у его предка TList.
Другими словами, как на конкретном примере реализовать конструкцию:
TMyList = class(TList, TMyItem);
← →
Skier © (2004-05-07 10:30) [1]
> Имитация множественного наследования
Имитация множественного наследования в Object Pascal возможна только через использование интерфейсов.
← →
ASMiD © (2004-05-07 10:31) [2]Либо я чегото недопонял, либо есть желание заставить дерево срастаться своей кроной?
← →
Ш-К (2004-05-07 10:32) [3]Ну, я то и прошу показать на примере.
← →
Skier © (2004-05-07 10:36) [4]>Ш-К (07.05.04 10:27)
TMYItem - Это узел дерева
TMyList - Это список узлов верхнего уровня.
Так ?
← →
Ш-К (2004-05-07 10:46) [5]Есть связка классов TItem-TList. И я хочу "наследоваться" от этой связки.
> TMYItem - Это узел дерева
> TMyList - Это список узлов верхнего уровня.
> Так ?
Именно так.
← →
Skier © (2004-05-07 10:52) [6]>Ш-К (07.05.04 10:46) [5]
> Именно так.
А теперь такой вопрос (прошу над ним хорошо подумать) : зачем для решения такой задачи множественное наследование ?
← →
Ш-К (2004-05-07 11:01) [7]
> зачем для решения такой задачи множественное наследование
Я не знаю, как ещё :(
Если можно обойтись, то буду рад.
Это для моей задачи с деревьями.
А в общем, хотелось бы хоть раз увидеть, как с помощью интерфейсов сделать сабж.
← →
Ш-К (2004-05-07 11:06) [8]Да, в дополнение к [5]
TMyList не просто список, у него еще должны быть все св-ва TMYItem.
← →
Skier © (2004-05-07 11:09) [9]
> TMyList не просто список, у него еще должны быть все св-ва
> TMYItem.
смотри реализацию TObjectList. И делай по аналогии...
> А в общем, хотелось бы хоть раз увидеть, как с помощью интерфейсов
> сделать сабж.
интерфейсы тут совершенно не нужны...
← →
Goida © (2004-05-07 11:12) [10]У тебя есть TItem. У тебя должен быть TList, который должен быть оболочкой для TItem, а не наследоваться от него. У тебя эти классы делают совершенно разную работу.
← →
Ш-К (2004-05-07 11:24) [11]Наверно, внесло путаницу названия базовых классов. Ничего общего с Classes.TList
Прошу прощения, с деревьями тема закрыта. Это не деревья. Всё.
Сделал TMyItem = class(TList)
Skier © (07.05.04 10:30) [1]
> > Имитация множественного наследования
>
> Имитация множественного наследования в Object Pascal возможна
> только через использование интерфейсов.
Skier © (07.05.04 11:09) [9]
> > А в общем, хотелось бы хоть раз увидеть, как с помощью
> интерфейсов
> > сделать сабж.
>
> интерфейсы тут совершенно не нужны...
← →
Goida © (2004-05-07 11:35) [12]
> Ш-К
> Сделал TMyItem = class(TList)
Ты не правильно сделал... Хотя хозяин - барин...
← →
malkolinge © (2004-05-07 12:01) [13]
> > Имитация множественного наследования
TbaseClass1=class
procedure a
end;
TbaseClass2=class
procedure b
end;
IbaseClass2 = interface
procedure b
end
TMyClass = class(TbaseClass1, IBaseClass2)
property BaseClass2:TbaseClass2 implements IBaseClass2;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c