Junior — Middle
Explicați mecanismul și caracteristicile moștenirii în programarea orientată pe obiecte.
sobes.tech AI
Răspuns de la AI
În programarea orientată pe obiect (OOP), moștenirea permite crearea unei clase noi pe baza uneia existente, preluând proprietățile și metodele acesteia. Acest lucru promovează reutilizarea codului și organizarea ierarhică a obiectelor.
Caracteristici ale moștenirii:
- Ierarhia claselor: clasa derivată (subclasa) extinde sau redefinește comportamentul superclasei (părintele).
- Polimorfism: obiectele subclasei pot fi utilizate acolo unde se așteaptă un obiect al superclasei.
- Încapsulare: moștenirea nu încalcă principiul ascunderii datelor, dar subclasa are acces la membrii protejați și publici ai superclasei.
În Go, nu există moștenire directă a claselor, dar există compoziție și interfețe care permit implementarea unor modele similare.
Exemplu în Go cu compoziție:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Dog "moștenește" de la Animal prin embedding
// și poate redefine metoda 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!
}