Sobes.tech
Назад к вопросам
Junior — Middle
93

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

Ответ от нейросети

sobes.tech AI

Инкапсуляция — это принцип объектно-ориентированного программирования, который предполагает скрытие внутреннего состояния объекта и предоставление доступа к нему только через методы (интерфейс).

В Go инкапсуляция достигается с помощью видимости идентификаторов:

  • Имена, начинающиеся с заглавной буквы, экспортируются и доступны из других пакетов (публичные).
  • Имена, начинающиеся с маленькой буквы, доступны только внутри пакета (приватные).

Таким образом, чтобы инкапсулировать данные, нужно объявить поля структуры с маленькой буквы и предоставить методы для доступа и изменения этих полей.

Пример:

package user

type User struct {
    name string // приватное поле
}

func NewUser(name string) *User {
    return &User{name: name}
}

func (u *User) GetName() string {
    return u.name
}

func (u *User) SetName(name string) {
    u.name = name
}

Такой подход позволяет контролировать доступ к данным, обеспечивать их целостность и изменять внутреннюю реализацию без влияния на внешний код.