и для Class?
Интерфейсами
А object - это deprecated
Мне же только что сказали, что использовать его, если хочу на стеке
Ну либо по принципу "нет поддержки множественного наследования – нет проблемы"
Ну в FPC - хз, а Delphi это рудимент для совместимости
множественного наследования нету
для класса интерфейсы, для объекта никак
А явно указать из какого предка можно?
Интерфейсы позволяют указать принадлежность к кому угодно
Нет, я имел ввиду, избежать "виртуального наследования", явно указав из какого класса взять реализацию верхнего класса.
В Делфи класс, который должен поддерживать конкретный интерфейс может использовать свойство, которое будет ссылаться на объект, который реализует этот интерфейс
implementation чтоли? В лазаре они частично поломаны вроде
Ну за лазарь и не говорю, но да оно)
наследоваться от потомков TInterfacedObject вообще нет проблем )
Да точно, поломаны, причем у нас есть патч, но он только частично решает проблему поэтому мы его пока не выкладывали. https://gitlab.com/freepascal.org/fpc/source/-/issues/40795
Это можно сделать через интерфейсы. ... IRadio = interface procedure Play; procedure IncVolume; procedure DecVolume; end; IRadioRecorder procedure Record; end; TRadio = class(T)
Это можно сделать через интерфейсы и свойства ... {$interfaces cprba} ... interface type IRadio = interface procedure Play; procedure IncVolume; procedure DecVolume; end; IRecorder = interface procedure Record; end; TRadio = class(IRadio) procedure Play; procedure IncVolume; procedure DecVolume; end; TRadioRecorder = class(IRadio, IRecorder) private FRadio: TRadio; public procedure Record; property Radio: TRadio read FRadio write FRadio implements IRadio; end;
Обсуждают сегодня