Difference between revisions of "Class"
(Warning: this page bugs when unlogged) |
|||
Line 5: | Line 5: | ||
Another interesting thing about classes is that they free the programmer from the need for [[pointer]]s and [[reference]]s. They are automatically handled by the [[compiler]] at compile time. | Another interesting thing about classes is that they free the programmer from the need for [[pointer]]s and [[reference]]s. They are automatically handled by the [[compiler]] at compile time. | ||
− | Classes are able to inherit and to be inherited by other classes. For runtime purposes, any class not specifying a parent class automatically inherits from TObject, as it has required components for all classes. Because of TObject's dependency, any [[subclass]]'s | + | Classes are able to inherit and to be inherited by other classes. For runtime purposes, any class not specifying a parent class automatically inherits from TObject, as it has required components for all classes. Because of TObject's dependency, any [[subclass]]'s destructor must have the [[override]] directive. Additionally, any of your class's constructors must specify [[inherited]] in their body. A class can have several constructors, but only one destructor. |
<syntaxhighlight> | <syntaxhighlight> |
Revision as of 19:11, 25 October 2015
│
Deutsch (de) │
English (en) │
français (fr) │
русский (ru) │
A class is a highly structured data type in Object Pascal dialects such as Delphi or the ObjFPC dialect. Classes are able to contain variables, constructors, destructors, functions, procedures, and properties using access scopes.
Another interesting thing about classes is that they free the programmer from the need for pointers and references. They are automatically handled by the compiler at compile time.
Classes are able to inherit and to be inherited by other classes. For runtime purposes, any class not specifying a parent class automatically inherits from TObject, as it has required components for all classes. Because of TObject's dependency, any subclass's destructor must have the override directive. Additionally, any of your class's constructors must specify inherited in their body. A class can have several constructors, but only one destructor.
type
TMyClass = class(TObject)
private // self access only
FSomeVar: Integer;
public // access by anything
constructor Create; overload;
constructor Create(Args: array of Integer); overload;
destructor Destroy; override;
function GetSomeVar: Integer;
procedure SetSomeVar(newvalue: Integer);
published // special type of public scope
property SomeVar: Integer read GetSomeVar write SetSomeVar default 0;
end;
var
classInstance: TMyClass.Create;
but if you declare the variable as a class whitout initialisation of the object and you want create the object dynamicly you need to do :
var
classInstance: TMyClass;
implementation
begin
classInstance := TMyClass.Create;
end;
constructor TMyClass.Create;
begin
inherited;
SomeVar := 6;
end;
simple data types |
|
---|---|
complex data types |