Michael says in dk.edb.programmering.pascal:
> Jeg sider og kigger lidt i noget Delphi materiale og har stødt på ordet
> 'abstract' et par gange uden nogen forklaring, og derfor spørger jeg jer, om
> i ved hvad en abstract klasse er og hvad den bruges til, evt. nogle links.
Et klassisk eksempel er at lave et program der kan vise 
forskellige former på skærmen: Firkanter, cirkler og trekanter. 
Jeg har Java i hovedet lige nu, så det kan være jeg roder lidt i 
syntaksen:
Man definerer en abstrakt superklasse, lad os kalde den Shape.
I denne klasse angiver man en abstrakt metode der hedder 
drawShape(wheretoDraw: TCanvas);
Derefter laver man nogle konkrete implementationer (Square, 
Circle og Triangle), der arver fra Shape og implementerer 
metoden drawShape.
Vi kan så lave en datastruktur der indeholder objekter af typen 
Shape og vide at metoden drawShape eksisterer for disse 
objekter. Altså anvende polymorfi.
var
  myShapes: array of Shape;
begin
  SetLength(myShapes, 4);
  myShapes[0]:= Square.Create(10, 10, 30, 40);
  myShapes[1]:= Circle.Create(20, 20, 25);
  myShapes[2]:= Triangle.Create(5, 50, 30, 30, 20, 10);
  myShapes[3]:= Triangle.Create(40, 0, 30, 40, 45, 65);
  ...
  for i:= 0 to Length(myShapes)-1 do
    myShapes[i].drawShape(myCanvas);
  ...
end;
Vi kunne også gøre dette ved at lave Shape konkret og lade den 
indeholde en konkret metode drawShape, der så blot skulle gøre 
ingenting.
Fordelen ved at erklære klassen & metoden abstrakt er
1) Man (eller lige så sandsynligt: Dem man arbejder sammen med) 
   kommer ikke til at lave instanser af Shape. Man får ikke lov
   af compileren.
2) Når der nedarves fra Shape vil compileren brokke sig hvis man 
   ikke husker at lave en implementation af drawShape.
-- 
Toke Eskildsen <URL:
http://www.daimi.au.dk/~darkwing/>