Qual è la differenza tra incorporamento e composizione?

1

Qual è la differenza tra l'incorporamento del tipo di go e la composizione dell'oggetto?

La mia comprensione è che l'incorporamento di tipi è composizione di oggetti, eccetto che i metodi del tipo incorporato vengono inoltrati automaticamente come sarebbero in ereditarietà.

    
posta cheezsteak 04.03.2015 - 22:12
fonte

1 risposta

4

È esattamente come l'hai descritto tu: l'incorporamento di Go è una composizione con l'ulteriore vantaggio di "inoltrare" l'interfaccia.

Nella mia mente l'incorporamento è un tentativo di preservare il principale vantaggio dell'eredità tradizionale OOP - il riutilizzo del codice - evitando il suo più grande trabocchetto - un accoppiamento estremamente stretto. Quando si "eredita" un metodo tramite l'incorporamento, la classe "derivata" non è responsabile o addirittura in grado di reimplementarla, quindi non può "rompere la classe base" in qualche modo. E poiché non ci sono metodi "protetti" o "privati" a cui la tua classe "derivata" potrebbe avere accesso, non c'è violazione di incapsulamento. Ma hai ancora tutta la comodità di "ereditare" direttamente "l'interfaccia della classe base" piuttosto che scrivere un sacco di funzioni wrapper.

    
risposta data 04.03.2015 - 22:40
fonte

Leggi altre domande sui tag