Очень рекомендую учебник: "С. Бобровский. Delphi7. Учебный курс"
Примеры:
1) Инкапсуляция
Добавляешь в проект два новых модуля Unit2 и Unit3;
В Unit2 в раздел interface:
Код:
type
TOne = class(TObject)
private
function F1(x,y:integer):integer;
public
function F2(x,y:integer):integer;
function F3(x:integer):integer;
end;
в раздел implementation:
Код:
function TOne.F1(x, y: integer): integer;
begin
Result:= x + y;
end;
function TOne.F2(x, y: integer): integer;
begin
Result:= x*y + Self.F1(x,y); // x*y + x + y
end;
function TOne.F3(x: integer): integer;
begin
Result:= x + 2;
end;
В Unit3 в раздел interface:
ссылку на второй модуль
и
Код:
type
TTwo = class(TOne)
public
function F2(x,y:integer):integer;
end;
в раздел implementation:
Код:
function TTwo.F2(x, y: integer): integer;
begin
Result:=x*x*y+Self.F3(y); // x*x*y+y+2
// 2) Наследование
// функция F3 наследуется от родительского класса TOne
end;
Т.к функция F1 класса TOne объявлена в разделе private,
то она видна только в даннов классе(ну и в модуле, где описан класс),
о вот функции F2 и F3 можно свободно использовать.
3) Полиморфизм
теперь в главный модуль:
добавить ссылки на Unit2 и Unit3;
и, например, по клику на кнопке:
Код:
var obj1:TOne;
obj2:TTwo;
begin
obj1 := TOne.Create;
obj2 := TTwo.Create;
ShowMessage('x=3, y=5, F2='+IntToStr(obj1.F2(3,5))); // 3*5+3+5=23
ShowMessage('x=3, y=5, F2='+IntToStr(obj2.F2(3,5))); // 3*3*5+y+2=52
// - вот пример полиморфизма - вызывается метод класса TTwo
// а вот чтобы вызвать родительский метод F2 надо:
ShowMessage('x=3, y=5, F2='+IntToStr(TOne(obj2).F2(3,5))); // 3*5+3+5=23
obj2.Free;
obj1.Free;
end;