Что ж, если вы пойдете по этому пути, вы можете сказать, что C и C ++, C # и все другие языки высокого уровня избыточны, потому что вы можете кодировать все, что захотите, используя ассемблер.Конечно, вам абсолютно не нужны эти языки высокого уровня, однако, они помогают ... очень много.
Все эти языки поставляются с различными утилитами.Для некоторых из них концепция интерфейса является одной из этих утилит.Так что да, в C ++ вы могли бы избежать использования интерфейсов, флешки с абстрактными классами без реализации.
На самом деле, если вы хотите программировать Microsoft COM с C, хотя C не знает концепцию интерфейса, вы можете сделать это, потому что все .h файлы определяют интерфейсы следующим образом:
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ABCDE000-0000-0000-0000-000000000000")
IMyInterface : public IUnknown
{
...
}
#else /* C style interface */
typedef struct IMyInterfaceVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *SomMethod )(... ...);
END_INTERFACE
} IMyInterfaceVtbl;
interface IMyInterface
{
CONST_VTBL struct IMyInterfaceVtbl *lpVtbl;
};
#endif
Какой-то другой синтаксический сахар ...
И это правда, что в C #, если яне было концепции интерфейса, я не знаю, как я мог бы на самом деле код :).В C # нам абсолютно необходимы интерфейсы.