Sobes.tech
Junior — Middle

Објасните механизам и особине наслеђивања у објектно-оријентисаном програмирању.

sobes.tech АИ

Одговор од АИ

U objektno-orijentisanom programiranju (OOP), nasleđivanje omogućava kreiranje nove klase na osnovu postojeće, preuzimajući njena svojstva i metode. To podstiče ponovnu upotrebu koda i hijerarhijsku organizaciju objekata.

Karakteristike nasleđivanja:

  • Hijerarhija klasa: podklasa (naslednik) proširuje ili redefiniše ponašanje superklase (roditelja).
  • Polimorfizam: objekti podklase mogu se koristiti tamo gde se očekuje objekat superklase.
  • Enkapsulacija: nasleđivanje ne narušava princip skrivanja podataka, ali podklasa ima pristup zaštićenim i javnim članovima superklase.

U Go nema direktnog nasleđivanja klasa, ali postoje kompozicija i interfejsi koji omogućavaju implementaciju sličnih obrazaca.

Primer u Go sa kompozicijom:

 type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Dog "nasleđuje" od Animal putem embedding-a
// i može redefinisati metodu 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!
}