// Full Unit code. // ----------------------------------------------------------- // You must store this code in a unit called Unit1 with a form // called Form1 that has an OnCreate event called FormCreate. unit Unit1; interface uses Forms, Dialogs, Classes, Controls, StdCtrls; type // Define a parent class, base on TObject by default TFruit = class public name : string; Constructor Create; overload; // This constructor uses defaults Constructor Create(name : string); overload; end; // Define a descendant types TApple = class(TFruit) public diameter : Integer; published Constructor Create(name : string; diameter : Integer); end; // The class for the form used by this unit TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Include form definitions // Create a fruit object - parameterless version constructor TFruit.Create; begin // Execute the parent (TObject) constructor first Inherited; // Call the parent Create method // Now set a default fruit name self.name := 'Fruit'; end; // Create a fruit object - parameterised version constructor TFruit.Create(name: string); begin // Execute the parent constructor first Inherited Create; // Call the parent Create method // And save the fruit name self.name := name; end; // Create an apple object constructor TApple.Create(name: string; diameter : Integer); begin // Execute the parent (TFruit) constructor first Inherited Create(name); // Call the parent method // Now save the passed apple diameter self.diameter := diameter; end; // Main line code procedure TForm1.FormCreate(Sender: TObject); var fruit : TFruit; banana : TFruit; apple : TApple; begin // Create 3 different fruit objects fruit := TFruit.Create; banana := TFruit.Create('Banana'); apple := TApple.Create('Pink Lady', 12); // See which of our objects are fruits if fruit Is TFruit then ShowMessage(fruit.name +' is a fruit'); if banana Is TFruit then ShowMessage(banana.name +' is a fruit'); if apple Is TFruit then ShowMessage(apple.name +' is a fruit'); // See which objects are apples if fruit Is TApple then ShowMessage(fruit.name +' is an apple'); if banana Is TApple then ShowMessage(banana.name +' is an apple'); if apple Is TApple then ShowMessage(apple.name +' is an apple'); end; end. |