static

2 отговора 83 прегледа
#1

static

Могат ли да се направят на object pascal методи, които да са свързани с класа, а не с инстанцията му (без да се ползва в тях self), подобно на c++ static methods?

Отговор
в отговор на a.novak #2

Като чета хелпа на BP70 - май не, но ...

но ако пишеш конзолно на Delphi (пак е компилатор за паскал) - можеш да позваш
class procedure Name();
class function Name();

Отговор
в отговор на a.novak #3

Re: static

Да, може. Ето хелпа:

A class method is a method (other than a constructor) that operates on classes instead of objects. The definition of a class method must begin with the reserved word class. For example,

type

TFigure = class
public
class function Supports(Operation: string): Boolean; virtual;
class procedure GetInfo(var Info: TFigureInfo); virtual;
...
end;

The defining declaration of a class method must also begin with class. For example,

class procedure TFigure.GetInfo(var Info: TFigureInfo);

begin
...
end;

In the defining declaration of a class method, the identifier Self represents the class where the method is called (which could be a descendant of the class in which it is defined). If the method is called in the class C, then Self is of the type class of C. Thus you cannot useSelf to access fields, properties, and normal (object) methods, but you can use it to call constructors and other class methods.
A class method can be called through a class reference or an object reference. When it is called through an object reference, the class of the object becomes the value of Self.

Mixy
Отговор