Sobes.tech
Back to questions
Junior — Middle
82

Объясните механизм и особенности наследования в объектно-ориентированном программировании.

Companies where asked
WildberriesWildberries

Answer from AI

sobes.tech AI

В объектно-ориентированном программировании (ООП) наследование позволяет создавать новый класс на основе уже существующего, перенимая его свойства и методы. Это способствует повторному использованию кода и иерархической организации объектов.

Особенности наследования:

  • Иерархия классов: подкласс (наследник) расширяет или переопределяет поведение суперкласса (родителя).
  • Полиморфизм: объекты подкласса могут использоваться там, где ожидается объект суперкласса.
  • Инкапсуляция: наследование не нарушает принцип сокрытия данных, но подкласс имеет доступ к защищённым и публичным членам суперкласса.

В Go прямого наследования классов нет, но есть композиция и интерфейсы, которые позволяют реализовать похожие паттерны.

Пример на Go с композицией:

type Animal struct {
    Name string
}

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

// Dog "наследует" Animal через вложение
// и может переопределить метод 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!
}