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!
}