Ĺadny brzuch
Do czego służy dyrektywa override w delphi przy tworzeniu klas i kiedy powiniennem je stosowac?
override - służy do redefiniowania metod (nadpisywania). Umieszczenie jej po deklaracji metody spowoduje nadpisanie metody o takiej samej nazwie w klasie bazowej (jeśli takowa istnieje) tj. klasa bazowa zamiast odwoływać się do starej metody będzie wywoływać naszą, nową. Aby wywołać metodę z klasy bazowej czyli te nadpisaną należy użyć słowa kluczowego inherited. Przykład:
type TKlasaPochodna = class(TKlasaBazowa) public procedure Procka; override; end; {...} procedure TKlasaPochodna.Procka; begin inherited; end;
Metoda o nazwie Procka z klasy bazowej zostanie nadpisana przez naszą procedurę. Od tej pory gdy klasa bazowa będzie wywoływać swoją procedurę Procka to zamias niej będzie wywołana nasza. Słowo inheited spowoduje wywołanie metody nadpisanej (czyli tej z klasy bazowej), dlatego ten kod nie będzie w tym przypadku miał żadnego efektu. Mozna oczywiście umieszczać w tej procedurze swoje instrukcje, które będą wykonywane podczas jej wywołania. Inherited nie jest wymagane, używamy go tylko wtedy gdy chcemy wykonać metodę bazową i np. jakieś nasze instrukcje.
http://www.planeta-delphi.com
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
override - służy do redefiniowania metod (nadpisywania). Umieszczenie jej po deklaracji metody spowoduje nadpisanie metody o takiej samej nazwie w klasie bazowej (jeśli takowa istnieje) tj. klasa bazowa zamiast odwoływać się do starej metody będzie wywoływać naszą, nową. Aby wywołać metodę z klasy bazowej czyli te nadpisaną należy użyć słowa kluczowego inherited. Przykład:
type TKlasaPochodna = class(TKlasaBazowa) public procedure Procka; override; end; {...} procedure TKlasaPochodna.Procka; begin inherited; end;
Metoda o nazwie Procka z klasy bazowej zostanie nadpisana przez naszą procedurę. Od tej pory gdy klasa bazowa będzie wywoływać swoją procedurę Procka to zamias niej będzie wywołana nasza. Słowo inheited spowoduje wywołanie metody nadpisanej (czyli tej z klasy bazowej), dlatego ten kod nie będzie w tym przypadku miał żadnego efektu. Mozna oczywiście umieszczać w tej procedurze swoje instrukcje, które będą wykonywane podczas jej wywołania. Inherited nie jest wymagane, używamy go tylko wtedy gdy chcemy wykonać metodę bazową i np. jakieś nasze instrukcje.
http://www.planeta-delphi.com