Back to questions
Junior — Middle
92
Объясните концепцию инкапсуляции данных в объектно-ориентированном программировании.
Answer from AI
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
}
Такой подход позволяет контролировать доступ к данным, обеспечивать их целостность и изменять внутреннюю реализацию без влияния на внешний код.