Обяснете ясно за интерфейсите в OOP (Delphi)

Всички статии, които намерих, изглеждат по следния начин: „Сега ще ви обясним с прости думи как да броите до десет и така ще започнем: Едно, две, три, Fourevdlyrzhe, fxzgZryzhpr hnge-034 53 uzhzhkshkhyts e. Е, сега знаете как да броите до десет.“

Всичко, което разбирам е, че интерфейсът е наименуван обект (като клас), който има "празни" методи (тоест описания на имена, но не и техния код). Но какво да правим след това с това знание не е ясно. Може би има някакъв прост пример, практичен? Например - трябва да направим нещо, за това използваме интерфейса за това и го правим така.

Всичко, което разбирам е, че интерфейсът е наименуван обект (като клас), който има "празни" методи (тоест описания на имена, но не и техния код). Но какво да правим след това с това знание не е ясно. Може би има някакъв прост пример, практичен?

Накратко, да. Това е точно това. До купчина те могат да се комбинират, наследяват, включват един в друг и т.н., което не може да се направи с класове. Интерфейсите са много удобен начин за предоставяне на достъп до методите на класа без отваряне на кода, има много приложения. Тук можете просто да поставите класовете в dll, и да не мислите за освобождаване на обекти, и да внедрите плъгин система, и да споделите кода от dll с някого, без да показвате този dll. Прочетете за ActiveX и COM.

Като същност на самата DLL, вече имам пълноценен клас със същото име и имена на методи, но вече с код в тях.

Тези. Мога да опиша интерфейса в приложението, а във външния DLL да разширя самия интерфейс като добавям методи към него и приложението ще ги види?

И може ли един интерфейс да съдържа описан (код) метод? Тези. ако библиотеката с класа не е заредена, тогава тя използва този метод,ако е зареден, тогава от клас метод от DLL?

Е, това е като предистория. Всъщност се опитайте да разберете тази статия (metanit.com/sharp/tutorial/3.9.php). Става въпрос за C#, но идеята на интерфейса е същата и кодът не трябва да ви изглежда напълно неразбираем. Но картината е доста достъпна

И след като разберете какво е интерфейс и защо е, ето един въпрос, който се задава в интервютата: кога трябва да използвате интерфейс и кога трябва да използвате абстрактен клас?