[Delphi]Dziedziczenie

0

Witam,
mam taki kłopot z dziedziczeniem tzn. mam formę bazową z której dziedziczą pozostałe. Na formie bazowej mam pewną procedurę, która w pętli wywołuje inną. Ale właściwa implementacja tej "innej" procedury jest już zależna od formatek, które dziedziczą z bazowej.
Jak wymusić wywołanie procedury formatki "dziecka" podczas iteracji w procedurze formatki "rodzica". Dodatkowym utrudnieniem jest to, że nie każde dziecko musi zawierać definicję tej procedury. Obecnie "procedura pętla" z rodzica wywołuje "procedurę operację" też z rodzica a nie z dziecka. Przeciążyć z dodatkową klauzulą ?
Pozdrawiam

// odpowiedź

w bazowej w definicji do procedury virtual; abstract;
w dziedziczącej override;

0

Jak procka będzie abstrakcyjna, to (chyba) będziesz miał problem jak trafisz na dziecko które jej nie zaimplementowało. Całość będzie się kompilować ale wyleci Ci błąd. Lepszym rozwiązaniem jest definicja w klasie bazowej procki jako tylko virtual z pustym ciałem. No i w dziedziczącej oczywiście override. Aha, i (chyba) abstract jest domyślnie virtual.

P.S. kiepsko się czuję, więc mogę pisać bzdury : )

b

0
b0bik napisał(a)

Jak procka będzie abstrakcyjna, to (chyba) będziesz miał problem jak trafisz na dziecko które jej nie zaimplementowało. Całość będzie się kompilować ale wyleci Ci błąd.

Będzie się kompilować, ale z warningiem. Jeśli założymy sobie sztywne ramy, że kompilacja zawsze musi być czysta - to nie ma się czym przejmować.

-- poprawka: jeśli Z GÓRY zakładamy, że nie każda klasa potomna będzie zawierać definicję metody, najlepsza będzie pusta metoda wirtualna w klasie rodzica.

0

Co też właśnie napisałem. W domyśle jest to rozwiązanie - w "dziecku" przedefiniowywujemy jak chcemy, jak nie to nie.

A co do czystości kompilacji - szczerze polecam takie podejście, można poprawić wiele dzięki temu błędów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1