Conosco lo scopo e tutto. Vedo me stesso come sviluppatore solista per un paio di anni.
Vedo sempre le risposte che è un contratto. Sì, lo capisco.
Ma ecco qualcosa nella mia mente:
Se una classe non fornisce ciò che vuole un'interfaccia, genererà un errore.
Bene, se una classe ha davvero bisogno di quel metodo, genererà comunque un errore se c'è qualcosa che lo chiama e non è lì giusto?
Qual è la differenza?
Posso solo realizzarlo e andare avanti con le "norme", ma questo mi lascerà sospeso con la domanda "perché". Non mi piace seguire ciecamente qualcosa senza capirlo.
EDIT:
Ho provato a cercare risposte su questa domanda molte volte prima e quello che trovo sempre è qualcosa come "Così quando qualcun altro ...". Non ho provato a lavorare con qualcun altro prima e non sono sicuro se questo sia davvero il motivo per cui usi un'interfaccia.
Voglio dire, perché faccio tutto da solo così so che cosa nel mio codice ha bisogno giusto? E ancora, anche se dimentico di implementare un metodo, vedrò comunque un errore che dice che un metodo non è definito.
EDIT 2:
The Dependency Injection è un'ottima risposta. Implementare interfacce su questi aiuti nel caso in cui sia necessario sostituire le implementazioni di dipendenza. Sei in qualche modo sicuro che quello che ti serve è fornito.
È un po 'più chiaro per me ora che è un Contratto tra componenti (forse anche tra gli sviluppatori)