A FreePascalban alapvetően az Object kulcsszóval hozhatunk létre osztályokat. A class használatához szükség van a {$mode objfpc} módosítóra. Az osztályt a típusok részben kell felsorolni.
program Program01; {$mode objfpc} type Dolgozo = Class private Nev : String; Kor : Integer; Fiz : Real; public procedure beallitKor(atvettKor: Integer); function lekerKor(): Integer; end; procedure Dolgozo.beallitKor(atvettKor : Integer); begin Kor := atvettKor; end; function Dolgozo.lekerKor(): Integer; begin lekerKor := Kor; end; var Joska : Dolgozo; BEGIN Joska.Nev := 'Nagy József'; Joska.Kor := 24; Joska.Fiz := 380000; WriteLn(Joska.Nev); WriteLn(Joska.Kor); WriteLn(Joska.Fiz:0:2); ReadLn; END.
program Program01; {$mode objfpc} type Dolgozo = Class public Nev : String; Kor : Integer; Fiz : Real; constructor Create(); end; var Joska : Dolgozo; constructor Dolgozo.Create(); begin Nev := 'Névtelen'; Kor := 0; Fiz := 0; end; BEGIN Joska := Dolgozo.Create(); Joska.Kor := 24; WriteLn(Joska.Nev); WriteLn(Joska.Kor); ReadLn; END.
program Program01; type Dolgozo = Object public Nev : String; Kor : Integer; Fiz : Real; end; var Joska : Dolgozo; BEGIN Joska.Kor := 24; WriteLn(Joska.Nev); WriteLn(Joska.Kor); ReadLn; END.
A virtuális metódust felülírhatjuk a gyermek osztályokban. A FreePascalban a virtual kulcsszót kell a függvény végére írni:
program program01; {$mode objfpc} type Dolgozo = Class public nev : String; fizetes: Real; procedure beallitAlapFizetes(); virtual; end; Mernok = Class(Dolgozo) public procedure beallitAlapFizetes(); end; procedure Dolgozo.beallitAlapFizetes(); begin fizetes := 400000; end; procedure Mernok.beallitAlapFizetes(); begin fizetes := 800000; end; var joska: Dolgozo; feri : Mernok; BEGIN joska := Dolgozo.Create(); joska.nev := 'Nagy József'; WriteLn(joska.nev); joska.beallitAlapFizetes(); WriteLn(joska.fizetes:0:0); feri := Mernok.Create(); feri.nev := 'Topos Ferenc'; feri.beallitAlapFizetes(); WriteLn(feri.nev); WriteLn(feri.fizetes:0:0); END.
Meg kell jegyezzük, a Freepascal 2.6.2-6 a metódus felülírását megengedte akkor is, ha nem tettük ki a virtual kulcsszót.
program program01; {$mode objfpc} type Dolgozo = Class public nev : String; fizetes: Real; procedure beallitAlapFizetes(); end; procedure Dolgozo.beallitAlapFizetes(); begin fizetes := 400000; end; var joska: Dolgozo; BEGIN joska := Dolgozo.Create(); joska.nev := 'Nagy József'; WriteLn(joska.nev); joska.beallitAlapFizetes(); WriteLn(joska.fizetes:0:0); END.