Sobes.tech
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!
}