 
			
				04.01.2010, 23:55
			
			
			
		  
	 | 
	
		
		
		
			
			| 
			
				
				
				 Прохожий 
				
				
			 | 
			  | 
			
				
				
					Регистрация: 29.12.2008 
					
					
					Сообщения: 15
 
				
					Репутация: 10 
					    
				 
				
			 | 
		 
		 
		
	 | 
	
	
	
		
			
			
				 
				Способы реализации полиморфизма в Delphi
			 
			 
			
		
		
		
		подскажите пожалуйста какой есть еще принцип реализации полиморфизма в Delphi. Есть 1) перекрытие(override) 
2) перегрузка (overload) 
Какие ещё есть способы ?  
Вот код, где здесь реализация полиморфизма ?
 
	Код: 
	unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2, Unit3;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  C:TChelovek;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
C.SetAll(Form1.Edit1.Text,Strtoint(Form1.Edit2.Text),  Form1.Edit3.Text, StrToInT(Form1.Edit4.Text)) ;
C.Age;
Form1.Memo1.Lines.Add(C.Describe);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 C:=TChelovek.Create;
 C.SetAll('Èâàíîâà', 1991, 'Åëåíà', 14);
 C.Age;
  Form1.Memo1.Lines.Add(C.Describe);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
C.Free;
end;
end.
unit Unit2;
interface
uses SysUtils, Dialogs, DateUtils;
type
THuman=class
private
  FAge:integer;
  Ffam:string;
  FGod_rozd:integer;
  function GetFfam:string;
  procedure SetFfam(Ff:string);
  function GetFGod_rozd:integer;
  procedure SetFGod_rozd(FGR:integer);
public
  Function GetFAge:integer;
  procedure Age;
  function Describe:string;
  procedure SetAll(fam:string;god:integer);
  property Ffams:string read GetFfam
                        write SetFfam;
  property FGod_rozds: integer read GetFGod_rozd
                               write SetFGod_rozd;
end;
implementation
function THuman.GetFfam:string;
begin
 GetFfam:=Ffam;
end;
procedure THuman.SetFfam(Ff:string);
begin
Ffam:=Ff;
end;
function THuman.GetFGod_rozd:integer;
begin
  GetFGod_rozd:=FGod_rozd;
end;
procedure THuman.SetFGod_rozd(FGR:integer);
begin
  FGod_rozd:=FGR;
end;
procedure THuman.Age;
begin
  FAge:=YearOf(Date)-FGod_rozd;
end;
function THuman.GetFAge:integer;
begin
 GetFAge:=FAge;
end;
function THuman.Describe:string;
begin
  Describe:='Ôàìèëèÿ - '+Ffam+'   '+'Ãîä ðîæäåíèÿ - '+IntToStr(FGod_rozd)+'   '+'  Âîçðàñò - '+IntToStr(FAge)+'     ';
end;
procedure THuman.SetAll( fam:string; god:integer);
begin
  Ffam:=fam;
  FGod_rozd:=god;
  Age;
end;
end.
unit Unit3;
interface
uses SysUtils, Dialogs, Unit2;
type
TChelovek=class(THuman)
private
FImya:string;
Fnomer:integer;
function GetFImya:string;
procedure SetFImya(FI:string);
function GetFnomer:integer;
procedure SetFnomer(FN:integer);
public
property FImyas:string read GetFImya
                       write SetFImya;
property Fnomers:integer read GetFnomer
                         write SetFnomer;
function Describe:string;
procedure SetAll(fam:string;god:integer; imya: string; nomer:integer);       overload;
end;
implementation
function TChelovek.GetFImya:string;
begin
  GetFImya:=FImya;
end;
procedure Tchelovek.SetFImya(FI:string);
begin
  FImya:=FI;
end;
function TChelovek.GetFnomer:integer;
begin
  GetFnomer:=Fnomer;
end;
procedure TChelovek.SetFnomer(Fn:integer);
begin
  Fnomer:=Fn;
end;
function TChelovek.Describe:string;
begin
result:=inherited Describe;
Describe:=result+' èìÿ - '+FImya+'   '+' íîìåð - '+IntToStr(Fnomer);
end;
procedure TChelovek.SetAll(fam:string;god:integer; Imya:string; nomer:integer);
begin
inherited SetAll(fam,god);
FImya:=Imya;
Fnomer:=nomer;
end;
end.
 
  
		
	
		
		
		
		
		
	
		
			
 
			
			
			
				 
			
			
			
			
		 
		
	
	
	 |