Che cos'è l'ereditarietà dell'interfaccia?

L'ereditarietà dell'interfaccia è un meccanismo in alcuni linguaggi informatici in cui specifiche funzioni sono ereditate da una classe, e quindi quella particolare classe deve fornire implementazioni per tali funzioni per essere completa. Le interfacce esistono solo in alcuni linguaggi di programmazione orientati agli oggetti. Possono essere utilizzati per emulare l'ereditarietà multipla senza consentire a una classe di moltiplicare l'ereditarietà, poiché in genere non vi sono limiti al numero di interfacce da cui una classe può ereditare. Oltre ai metodi non implementati, le interfacce possono includere anche costanti pubbliche.

Nell'ereditarietà dell'interfaccia, l'oggetto che eredita gli stub e le costanti del metodo è considerato un tipo di oggetto interfaccia. Quindi, se una classe X ereditata da un'interfaccia Y, qualsiasi istanza della classe X sarebbe anche un'istanza della classe Y. Ciò diventa più complicato quando l'ereditarietà dell'interfaccia di una classe coinvolge più di un'interfaccia separata. Per ogni interfaccia aggiuntiva ereditata, la classe risultante può essere legittimamente utilizzata come istanza di ciascuna. Se una classe ereditata da dieci diverse interfacce, gli oggetti di quella classe potrebbero essere utilizzati come istanza di undici oggetti diversi, incluso se stesso.

Un'eredità così complessa non è spesso necessaria. L'ereditarietà dell'interfaccia viene utilizzata per garantire che una classe abbia un insieme specifico di comportamenti richiesti e questi comportamenti gli consentono di eseguire una varietà di funzioni che altrimenti non potrebbe svolgere. Un esempio comune di ciò è l'interfaccia ActionListener in Java, che richiede una classe per implementare solo un metodo specifico. La corretta implementazione di questo metodo consente all'utente di controllare pulsanti, voci di menu o qualsiasi altro oggetto finestra nella classe, se lo si desidera. L'ereditarietà dell'interfaccia è un modo relativamente semplice per aggiungere funzionalità complesse a una classe senza preoccuparsi dei problemi di ereditarietà più complicati.

Uno dei maggiori vantaggi dell'utilizzo dell'ereditarietà dell'interfaccia è che consente di utilizzare oggetti specifici in senso generico. Poiché una classe che implementa un'interfaccia è un'istanza di tale interfaccia, può essere utilizzata ovunque sia richiesta un'istanza di tale interfaccia. Ad esempio, se la classe A implementa la classe C e la classe B implementa anche la classe C, se un metodo accetta come parametro un'istanza di classe C, un'istanza di classe A o un'istanza di classe B sarebbe un parametro accettabile da utilizzare . Le interfacce non possono essere istanziate da sole perché non sono complete, quindi non ci sarebbe mai un oggetto che fosse puramente un'istanza di classe C come parametro.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?