はじめに
カプセル化とは、オブジェクト指向プログラミングにおける概念の1つで、クラス内で定義されたデータやメソッドに外部からアクセスすることを制限することです。この制限により、データやメソッドを意図しない方法で変更されたり、アクセスされたりすることを防ぐことができます。
サンプル説明
以下のコードでは、Person
構造体があり、name
とage
の2つのプライベートなフィールドが定義されています。また、SetName
とSetAge
の2つの公開されたメソッドがあり、これらのメソッドを通じてのみ、フィールドにアクセスできるようになっています。
package main
import (
"fmt"
)
type Person struct {
name string
age int
}
func (p *Person) SetName(name string) {
p.name = name
}
func (p *Person) SetAge(age int) {
p.age = age
}
func main() {
p := Person{name: "Alice", age: 30}
fmt.Println(p) // {Alice 30}
p.SetName("Bob")
p.SetAge(40)
fmt.Println(p) // {Bob 40}
// p.name = "Eve" // エラー!フィールドnameはプライベートです
}
このコードでは、main
関数の中でPerson
構造体を作成し、SetName
とSetAge
メソッドを使用してname
とage
フィールドを設定しています。しかし、フィールドに直接アクセスすることはできず、コンパイルエラーが発生します。
このように、カプセル化によって、プログラムの安全性や保守性が向上し、意図しない操作や不正なアクセスを防ぐことができます。