Директива 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 ); // плывем за питательным рачком