Junior — Middle
Aké dôsledky vzniknú, ak dátová štruktúra neimplementuje zadané rozhranie v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
V jazyku Go sú rozhrania implementované nepriame: ak štruktúra obsahuje všetky metódy rozhrania, implementuje ho. Ak štruktúra neimplementuje dané rozhranie:
- Kompilátor spôsobí chybu pri pokuse použiť túto štruktúru ako hodnotu typu rozhrania.
- To zabraňuje chybám za behu, pretože Go prísne kontroluje zhodu s rozhraniami počas kompilácie.
Napríklad, ak máte rozhranie:
type Reader interface {
Read(p []byte) (n int, err error)
}
A štruktúru:
type MyStruct struct {}
// Nemá metódu Read, takže MyStruct neimplementuje Reader
Pokus o priradenie MyStruct do premennej typu Reader spôsobí chybu kompilácie.
Týmto spôsobom, ak štruktúra neimplementuje rozhranie, nemôžete ju použiť tam, kde sa očakáva toto rozhranie, čo pomáha predchádzať logickým chybám v programe.