Директива reintroduce в Дельфи

Узнал, что в Дельфи есть директива reintroduce. Она говорит компиляторуо том, что не надо возмущаться, когда в родственных классах определены функции с одинаковыми именами, но разным набором параметров.

Здесь компилятор напомнит, что в коде непорядок:


type TFish = class
  procedure swim(); virtual;
end;

type TBoneFish = class(TFish)
  procedure swim(direction : TVector); overload; // Method 'swim' hides virtual method of base type TFish.
end;

А здесь все стало правильно:


type TFish = class
  procedure swim(); virtual;;
end;

type TBoneFish = class(TFish)
  procedure swim(direction : TVector); reintroduce; overload;
end;

В основном коде можно вызывать оба метода.


  bone_fish.swim(); // куда-то плывем
  bone_fish.swim( to_nutritious_crustacean ); // плывем за питательным рачком

Поделиться
Отправить
Популярное