LoginSignup
0
0

More than 1 year has passed since last update.

Go言語で説明する「カプセル化」について

Posted at

はじめに

カプセル化とは、オブジェクト指向プログラミングにおける概念の1つで、クラス内で定義されたデータやメソッドに外部からアクセスすることを制限することです。この制限により、データやメソッドを意図しない方法で変更されたり、アクセスされたりすることを防ぐことができます。

サンプル説明

以下のコードでは、Person構造体があり、nameageの2つのプライベートなフィールドが定義されています。また、SetNameSetAgeの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構造体を作成し、SetNameSetAgeメソッドを使用してnameageフィールドを設定しています。しかし、フィールドに直接アクセスすることはできず、コンパイルエラーが発生します。

このように、カプセル化によって、プログラムの安全性や保守性が向上し、意図しない操作や不正なアクセスを防ぐことができます。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0