Citat:
buha18: ovako...
2 klase
Code:
TNadredeni = class()
procedure jedi();
end;
Code:
TPodredeni = class()
procedure pij();
end;
pitanje je sljedece. da li mogu deklarirat globalnu varijablu, ali tijekom izvodjenja programa mijenjat njezin tip?
konkretno ne mijenjat tip, nego odredit tip u nekom trenutku kada mi je poznato kojeg tipa je varijabla?
Mogu da se pozovu samo ovako:
Code:
TNadredeni(nil).jedi;
TPodredeni(nil).pij;
Uz napomenu da ovakav poziv kao primer nema u helpu, knjigama, Internetu (nisam video) a u Delphi help(ovima)u ima ovaj primer:
Code:
type
TFigure = class
procedure Draw;
end;
TRectangle = class(TFigure)
procedure Draw;
end;
...
var
Figure: TFigure;
begin
Figure := TFigure.Create;
Figure.Draw; // calls TFigure.Draw
Figure.Destroy;
Figure := TRectangle.Create;
Figure.Draw; // calls TFigure.Draw
TRectangle(Figure).Draw; // calls TRectangle.Draw
Figure.Destroy;
...
U pretposlednjem redu citata (TRectangle(Figure).Draw;) poziva se metoda klase TRectangle a koristi se za taj poziv objekat klase TFigure. Objekat Figure je instanca klase TFigure a ta klasa nema metodu klase TRectangle koja se poziva. Kreirani objekat Figure nema metodu koja se poziva na ovaj način. To onda znači da se taj poziv odvija u okviru klase TRectangle i ako nije kreiran objekat te klase. Što znači da je preko metaobjekta klase TRectangle pozvan metod. Pošto se može pozvati ovako metoda klase (TRectangle) čiji objekat nije kreiran onda se može pozvati i bez bilo kakvog objekta (nil), jer metaobjektu klase TRectangle nije potrebna instanca klase TFigure.