Есть:
function ...
procedure ...
А есть:
class function ...
class procedure ...
Приставка class - для чего нужна и предназначена?
Какие привилегии даёт приставка class ?
PS: Заранее благодарен каждому за каждый информативный ответ.
.
Модератор: Модераторы
Sergei I. Gorelkin писал(а):- Неявный параметр self является не указателем на экземпляр, а тем, что возвращает classtype.
- Нельзя обращаться к полям, но можно обращаться к полям класса (те, что объявлены как class var ...).
- Нельзя вызывать обычные методы, но можно вызывать методы класса и конструкторы.
ClassType возвращает действительный тип объекта, а не просто его имя, как это делает ClassName. В отличие от Classlnfo, ClassName и ClassParent, ClassType оперирует объектами (экземплярами класса), а не классами (типами объектов). ClassType возвращает информацию, подобную возвращаемой оператором is. Фактически операторы is и as сами вызывают ClassType.
Sergei I. Gorelkin писал(а):Значение этого параметра разное для "обычных" методов и "методов класса".
из справочника писал(а):Переменная Self скрытый параметр для каждого метода в объекте. Он позволяет методу обратиться к объекту.
vitaly_l писал(а):Или иначе Вашу фразу нужно записать так: Значение self разное для: class методов (функций/процедур) и методов. <= так правильно я понимаю?
vitaly_l писал(а):И ещё при class появляется дополнительные поля(переменные), объявляемые class var SomeName; А зачем? Чем они отличаются от глобальных переменных(полей)?
vitaly_l писал(а):А что обозначает Self для (class методов)?
VirtUX писал(а):Т.е. доступа к обычным методам до конструктора нет, до class-методов доступ есть.
vitaly_l писал(а):И к полям(переменным), тоже можно обратиться до вызова конструктора самого класса?
alexey38 писал(а):конструкторы, деструкторы, создание экземпляра класса, наличие указателя на класс - это все не участвует в работе класс методов и класс полей; при обращении к которым нужно указать название класса + точку + название
vitaly_l писал(а):А как можно использовать переменные(поля) класса, если их заполнить до create - то..., то что в них записано, сохраняется после inherited Create;?
Для чего могут понадобиться(предназначены) class var поля?
Type
XXX=class
class var i:integer;
class procedure proc1();
end;
Для чего могут понадобиться(предназначены) class var поля?
absdjfh писал(а):Или их можно применять как-то еще?
Когда нет ни одного экземпляра класса, и не предполагается. А требуется просто систематизировать глобальные переменные и функции. То есть как техника обычного процедурного программирования.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4