Class/de
│
Deutsch (de) │
English (en) │
français (fr) │
русский (ru) │
Zurück zu den Datentypen.
Zurück zu den reservierten Wörtern.
Die Speicherverwaltung einer Klasse
Der Speicherbedarf einer Klasse
Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf aller ihrer Elemente.
Das heisst, der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden.
Der Speicherort einer Klasse
Eine Klasse wird auf dem Heap gespeichert und über einen Zeiger auf dem Stack referenziert.
.
Bestandteile (Objekte) einer Klasse
Eine Klasse ist ein strukturierter Datentyp, der sich aus folgendem zusammensetzen kann:
- Variablen
- Konstanten
- Konstruktor
- Destruktor
- Initialisierungsteil
- Funktionen
- Pozeduren
- Eigenschaften
Klassentypen
Eine Klasse kann:
- eine Basisklasse sein, d. h. die Klasse wird von keiner anderen Klasse abgeleitet.
- eine abgeleitete Klasse sein.
- Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.
- Eine abgeleitete Klasse erbt (übernimmt) die Eigenschaften, Funktionen und Prozeduren der Elternklasse.
- Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen.
- Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.
- eine Elternklasse sein
- Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.
- Eine Elternklasse gibt alle von ihrer eigenen Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.
Deklaration einer Basisklasse
Beispiel:
type
TTest = class
private
{ private declarations }
public
{ public declarations }
end;
Deklaration einer abgeleiteten Klasse
Beispiel:
type
TTest = class(TObject)
private
{ private declarations }
public
{ public declarations }
end;
Erweitertes Beispiel:
type
TTest = class(TObject)
private
FSomeVar: integer;
public
constructor Create; overload; // Überlädt den Konstruktor der Elternklasse
constructor Create(Args: array of integer); overload;
destructor Destroy; override; // Überschreibt den Destruktor der Elternklasse
function GetSomeVar;
procedure SetSomeVar(newvalue: integer);
published
property SomeVar: integer read GetSomeVar write SetSomeVar default 0;
end;
Sichtbarkeit von Objekten
Die einzelnen Sichtbarkeitsstufen private, protected, public und published sind nach ihrer Sichtbarkeit absteigend angeordnet.
Das heisst, die höchste Sichtbarkeitsstufe (published) befindet sich unten.
type
TTest = class(TObject)
private
{ Nur die Objekte der eigenen Klasse können diese Objekte sehen }
protected
{ Nur die Objekte der eigenen Klasse und alle davon abgeleiteten Klassen können diese Objekte sehen }
public
{ Öffentliche Objekte können überall da gesehen werden, wo die Klasse verwendet wird }
published
{ Hat die gleiche Sichtbarkeit wie public. Elemente die published sind werden auch im Objektinspektor angezeigt }
end;
Datentypen | |
---|---|
Einfacher Datentyp | Boolean | Byte |Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word |
Zusammengesetzter Datentyp | Array | Class | Record | Set | String | ShortString |