Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизClass function/procedure Найти похожие ветки
← →
Новичек (2004-06-22 16:05) [0]что такое subj?
и как это использовать?
спасибо за внимание!
← →
Amoeba © (2004-06-22 16:13) [1]Эта ф-я/процедура может вызываться без создания экземпляра класса. Естественно, при этом в ней не может быть обращения к полям/св-вам класса. Для лучшего понимания читай литературу. Большой выбор таковой в эл. виде найдешь на сайте А.Подгорецкого: http://www.podgoretsky.com/lang.html
← →
Тимохов © (2004-06-22 16:16) [2]а еще они бывают виртуальные.
← →
Amoeba © (2004-06-22 16:20) [3]
> Тимохов © (22.06.04 16:16) [2]
Интересно, знает ли автор вопроса разницу между виртуальными (а также динамическим) и статическими методами?
← →
Тимохов © (2004-06-22 16:24) [4]честно говоря разницу между дин и вирт методами я и сам плохо помню - когда то понял, что для моих задач разницы нет и за был.
а то, что классовые методы бывают виртуальные это здорово.
у меня на этом принципе вся библиотека написана.
← →
Новичек (2004-06-22 16:38) [5]ну про виртуальные и статические я вроде понимать!
типа:
TMyClass = class;
procedyre MyProc; virtual;
end;
TMyClass2 = class(TMyClass)
procedure MyProc; override;
end;
...
а с классовыми типа можно сделать так:
TMyEnum = (enElem1, enElem2, enElem3);
TMyBaseClass = class
class function GetType: TMyEnum; virtual; abstract;
end
TMyClass1 = class(TMyBaseClass)
class function GetType: TMyEnum; override;
end;
TMyClass2 = class(TMyBaseClass)
class function GetType: TMyEnum; override;
end;
TMyClass3 = class(TMyBaseClass)
class function GetType: TMyEnum; override;
end;
...
implementation
...
class function TMyClass1.GetType: TMyEnum; virtual; abstract;
begin
result := enElem1;
end;
...
class function TMyClass2.GetType: TMyEnum; virtual; abstract;
begin
result := enElem2;
end;
...
class function TMyClass3.GetType: TMyEnum; virtual; abstract;
begin
result := enElem3;
end;
я правильно усе написал?
← →
Тимохов © (2004-06-22 16:41) [6]
>
> я правильно усе написал?
лучший ответ - проверка!
проверь - все станет ясно.
ЗЫ с первого взгляда все ок. кроме того, что под implemention virtual; abstract; надо убрать.
← →
PVOzerski © (2004-06-22 16:46) [7]Уж что-то одно: либо abstract, либо begin ... end;
← →
Новичек (2004-06-22 16:56) [8]соорри! проглядел!
а спросил я про сабж... потому, что его еще ни разу не использовал... а в хелпе как-то сжато написано)))
всем бальшой спасибо! буду дальше разбираться!
← →
Amoeba © (2004-06-22 17:12) [9]
> а в хелпе как-то сжато написано
Тебе уже посоветовали почитать литературу.
← →
GrayFace © (2004-06-22 18:05) [10]Удалено модератором
Примечание: Любишь задавать вопросы в чужих ветках, а тебя никто не ограничивает создать свою
← →
Тимохов © (2004-06-22 18:09) [11]
> GrayFace © (22.06.04 18:05) [10]
я так понимаю под статическими вы понимаете то, как это понимается в сях, т.е. принадлежащие классу. Так?
Если да, то ответ:
никак. Можно делать эмуляциюclass function GetClassVar: Integer;
class procedure SetClassVar(...)
implementation
var
classvar: integer;
class function tmyclass.getclassvar: integer
begin
result := classvar;
end;
и т.д.
← →
Amoeba © (2004-06-22 18:09) [12]
> GrayFace © (22.06.04 18:05) [10]
Это что, шутка?
← →
PVOzerski © (2004-06-22 18:09) [13]>А как в Delphi делать статические переменные?
Если я правильно понял, о чем речь, использовать типизированные константы. Только последние версии требуют опции {$J+}
← →
Amoeba © (2004-06-22 18:16) [14]
> Только последние версии требуют опции {$J+}
Эта опция установлена по умолчанию.
← →
Arnold © (2004-06-22 21:27) [15]чёт я непонял. Статические то переменные в сях (static) это те которые живут до тех пока прога не деструкнется. А принадлежат они классу или какой либо функции это вродь без разницы.
← →
jack128 © (2004-06-22 21:44) [16]
> Arnold © (22.06.04 21:27)
про статические переменные я так понял имеется в виду, что то а ля
class CComPort
{
public:
static int m_static;
};
нет, нельзя. только то, что предложил > Тимохов © (22.06.04 18:09)
> честно говоря разницу между дин и вирт методами я и сам
> плохо помню - когда то понял, что для моих задач разницы
> нет и за был.
их поведение абсолютно одинаково. разница в реализации этого поведения. А для твоих задач, если ты используешь ООП(а значит объекты) разница есть ;-) Динамические методы не могут быть методами доступа свойств
← →
Тимохов © (2004-06-23 10:51) [17]
> Динамические методы не могут быть методами доступа свойств
да это я знаю.
про одинаковость поведения и разность реализации тоже.
но детали не помню, т.к. к моему делу не относятся :))
← →
Игорь Шевченко © (2004-06-23 11:01) [18]
> но детали не помню
"Разница между динамическими и виртуальными методами состоит в том, что таблица динамических методов DMT содержит адреса только тех методов, которые объявлены как dynamic в данном классе, в то время как таблица VMT содержит адреса виртуальных методов не только данного класса, но и всех его родителей. Значительно большая по размеру таблица VMT обеспечивает более быстрый поиск, в то время как при обращении к динамическому методу программа сначала просматривает таблицу DMT у объекта, затем у его родительского класса и так далее, пока не будет найдена нужная точка входа. "
← →
Тимохов © (2004-06-23 11:04) [19]всего то? :)))
тогда я знаю разницу virtual и dynamic :)))
спасибо, Игорь. Вы укрепили мою уверенность в моих же познаниях :))
← →
Anatoly Podgoretsky © (2004-06-23 11:07) [20]Amoeba © (22.06.04 16:13) [1]
К свойствам можно обращаться, если они не тянут за собой обращения к полям.
Например:
property CurentTime: TTime read Time;
← →
Игорь Шевченко © (2004-06-23 11:15) [21]Тимохов © (23.06.04 11:04)
Еще для укрепления:
"Динамические полезны когда базовый класс объявляет много перекрываемых методов, которые будут унаследованы множеством потомков, но только иногда будут перекрыты"
С уважением,
← →
Новичек (2004-06-23 11:21) [22]очччень интересно! теперь буду знать...
← →
Sandman25 © (2004-06-23 11:22) [23][22] Новичек (23.06.04 11:21)
Перечитайте [9] Amoeba © (22.06.04 17:12). Еще много чего интересного узнаете :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.032 c