Junior — Middle
Spiega il meccanismo e le caratteristiche dell'ereditarietà nella programmazione orientata agli oggetti.
sobes.tech AI
Risposta dell'AI
Nella programmazione orientata agli oggetti (OOP), l'ereditarietà consente di creare una nuova classe basata su una esistente, ereditando le sue proprietà e metodi. Ciò favorisce il riutilizzo del codice e l'organizzazione gerarchica degli oggetti.
Caratteristiche dell'ereditarietà:
- Gerarchia di classi: la sottoclasse (erede) espande o ridefinisce il comportamento della superclasse (genitore).
- Polimorfismo: gli oggetti della sottoclasse possono essere usati dove ci si aspetta un oggetto della superclasse.
- Incapsulamento: l'ereditarietà non viola il principio di occultamento dei dati, ma la sottoclasse ha accesso ai membri protetti e pubblici della superclasse.
In Go non esiste ereditarietà diretta di classi, ma ci sono composizione e interfacce che permettono di implementare pattern simili.
Esempio in Go con composizione:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Dog "eredita" da Animal tramite embedding
// e può ridefinire il metodo Speak
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Buddy
fmt.Println(dog.Speak()) // Woof!
}