カテゴリ: VB.NET 更新日: 2026/03/31

VB.NETでカプセル化を完全ガイド!初心者でもわかるクラスのPrivate・Public・Protected

VB.NETでカプセル化を実現する方法(Private/Public/Protected)
VB.NETでカプセル化を実現する方法(Private/Public/Protected)

先生と生徒の会話形式で理解しよう

生徒

「VB.NETのクラスってよく聞きますが、その中でカプセル化という仕組みがあると聞きました。どういうものなんですか?」

先生

「カプセル化とは、クラスの中のデータを守りながら必要なところだけ公開する仕組みのことだよ。VB.NETでも重要な考え方なんだ。」

生徒

「データを守るって、具体的にはどうやってやるんですか?VB.NETで難しい操作が必要ですか?」

先生

「難しくないよ。VB.NETではPrivate、Public、Protectedという“アクセス修飾子”を使うだけで簡単にカプセル化できるんだ。実際にどう使うのか見ていこう。」

1. カプセル化とは?VB.NETでなぜ必要なのか

1. カプセル化とは?VB.NETでなぜ必要なのか
1. カプセル化とは?VB.NETでなぜ必要なのか

カプセル化とは、プログラミングでとても大切な考え方で、クラスの内部にある変数やデータを外部から勝手に書き換えられないように守る仕組みです。例えば、銀行口座の残高を誰でも自由に変更できたら大変なことになりますよね。それを防ぐために、必要な操作だけ公開し、不必要な部分は隠しておきます。

VB.NETのカプセル化では、Public・Private・Protectedというキーワードを使います。これらは「アクセス修飾子」と呼ばれ、何をどこまで見せるか決める役割があります。

2. VB.NETのPrivate:外から触られないようにする

2. VB.NETのPrivate:外から触られないようにする
2. VB.NETのPrivate:外から触られないようにする

Private(プライベート)は、クラスの外から触られたくないデータを守るときに使います。クラスの中でしか使えないので、「この中だけの秘密にしておきたい」というときに便利です。

例えば、ゲームのプレイヤーの体力を勝手に変更されないようにしたい、などのケースがわかりやすい例です。


Public Class Player
    Private hp As Integer = 100

    Public Sub ShowHP()
        Console.WriteLine("HPは" & hp)
    End Sub
End Class

上の例では、hpはPrivateなので、クラスの外から書き換えることはできません。

3. VB.NETのPublic:誰でも使えるように公開する

3. VB.NETのPublic:誰でも使えるように公開する
3. VB.NETのPublic:誰でも使えるように公開する

Public(パブリック)は最も開かれたアクセス修飾子で、どこからでもアクセスできます。外部に公開したいメソッドや変数に使います。例えば、「名前を表示するメソッドをゲーム全体で使いたい」などの場面です。


Public Class Player
    Public Name As String

    Public Sub ShowName()
        Console.WriteLine("プレイヤー名:" & Name)
    End Sub
End Class

4. VB.NETのProtected:継承したクラスには見せるけど外部には見せない

4. VB.NETのProtected:継承したクラスには見せるけど外部には見せない
4. VB.NETのProtected:継承したクラスには見せるけど外部には見せない

Protected(プロテクテッド)は、「外部には隠したいけれど、子クラス(継承したクラス)には使わせたい」というときに使います。これは、オブジェクト指向の継承を理解すると、とても便利になるアクセス修飾子です。


Public Class Character
    Protected energy As Integer = 50
End Class

Public Class Hero
    Inherits Character

    Public Sub ShowEnergy()
        Console.WriteLine("エネルギー:" & energy)
    End Sub
End Class

5. VB.NETでカプセル化を使うとどう便利?

5. VB.NETでカプセル化を使うとどう便利?
5. VB.NETでカプセル化を使うとどう便利?

カプセル化は、単に変数を隠すだけの仕組みではありません。プログラムが複雑になってきたときに「予期しない動作を防ぐ」「クラスの内部構造を変更しても外部に影響を出さない」という大きなメリットがあります。

具体的には次のような点が便利です。

  • 勝手にデータを書き換えられないので安全
  • 変更に強いプログラムになる
  • どこから操作しているか明確になり、バグを減らせる
  • 必要な部分だけ公開することでクラスの役割が分かりやすくなる

6. VB.NETのカプセル化を使ったサンプルコード

6. VB.NETのカプセル化を使ったサンプルコード
6. VB.NETのカプセル化を使ったサンプルコード

ここでは、Privateで隠した変数をPublicのメソッドで操作する、という典型的なカプセル化の使い方を紹介します。


Public Class BankAccount
    Private balance As Integer = 0

    Public Sub Deposit(amount As Integer)
        balance += amount
    End Sub

    Public Sub ShowBalance()
        Console.WriteLine("残高:" & balance & "円")
    End Sub
End Class

このように、直接balanceを触るのではなく、Depositというメソッドを通して操作することで、安全なデータ管理ができます。

まとめ

まとめ
まとめ

VB.NETのカプセル化をしっかり理解する

VB.NETにおけるカプセル化は、クラス設計の基本でありながら、実務でも非常に重要な役割を持っています。Private、Public、Protectedといったアクセス修飾子を適切に使い分けることで、プログラムの安全性と保守性を高めることができます。特に初心者のうちは「とりあえずPublicで公開してしまう」という書き方をしがちですが、それではカプセル化の意味がなくなってしまいます。

カプセル化の本質は「必要なものだけを外に見せる」という点にあります。クラス内部のデータをむやみに公開せず、決められた操作だけを許可することで、予期しない変更や不正な値の代入を防ぐことができます。これにより、バグの発生を抑え、長期的に安定したシステムを構築することが可能になります。

アクセス修飾子の使い分けが品質を左右する

Privateはクラス内部だけで使う変数や処理に利用し、外部からの直接アクセスを防ぎます。Publicは外部に公開するための入り口として使い、メソッドや必要なプロパティを定義します。そしてProtectedは継承関係にあるクラス間でのみ共有するための仕組みとして利用されます。

この三つを正しく使い分けることで、クラスの責務が明確になり、読みやすく理解しやすいコードになります。特にチーム開発では、誰が見ても意図が分かる設計が求められるため、カプセル化の理解は欠かせません。

カプセル化を使った安全な設計のポイント

実務で意識したいポイントとしては、まず「フィールドは基本的にPrivateにする」という考え方があります。そして外部から操作が必要な場合は、Publicメソッドやプロパティを通してアクセスさせます。これにより、値のチェックや制御処理を挟むことができ、安全性が向上します。

また、カプセル化を意識すると自然と「責務の分離」も進みます。一つのクラスに多くの処理を詰め込むのではなく、役割ごとにクラスを分けることで、変更に強く再利用しやすい構造になります。

サンプルプログラムで理解を深める

以下はカプセル化を意識した少し実践的なサンプルです。残高を直接変更できないようにし、必ずメソッドを通して操作する設計になっています。


Public Class BankAccount
    Private balance As Integer = 0

    Public Sub Deposit(amount As Integer)
        If amount > 0 Then
            balance += amount
        End If
    End Sub

    Public Sub Withdraw(amount As Integer)
        If amount > 0 AndAlso balance >= amount Then
            balance -= amount
        End If
    End Sub

    Public Sub ShowBalance()
        Console.WriteLine("現在の残高:" & balance & "円")
    End Sub
End Class

Module Program
    Sub Main()
        Dim account As New BankAccount()

        account.Deposit(1000)
        account.Withdraw(300)
        account.ShowBalance()
    End Sub
End Module

このように、balanceを直接触らせず、DepositやWithdrawを通して操作することで、不正な値の操作を防ぐことができます。これがカプセル化の基本的な考え方です。

実行結果


現在の残高:700円

VB.NETカプセル化の重要キーワード整理

VB.NET カプセル化 クラス 設計 Private Public Protected アクセス修飾子 データ保護 セキュリティ 保守性 向上 バグ防止 オブジェクト指向 継承 プロパティ メソッド 安全設計 初心者 解説 基本 文法 実践 サンプルコード といったキーワードは、カプセル化を理解する上で重要な要素です。これらを意識して学習することで、より実践的なスキルが身につきます。

先生と生徒の振り返り会話

生徒

VB.NETのカプセル化について学んでみて、データを守ることがとても大事だと分かりました。今まではPublicばかり使っていたのですが、それだと危険なんですね。

先生

その通りだね。Publicは便利だけど、使いすぎるとどこからでも変更できてしまう。だから基本はPrivateにして、必要な操作だけ公開することが大切なんだ。

生徒

Protectedも最初はよく分からなかったのですが、継承したクラスで使える仕組みだと理解できました。将来的に役立ちそうです。

先生

いい理解だね。継承と組み合わせることで、より柔軟な設計ができるようになるよ。カプセル化はオブジェクト指向の基本だから、しっかり身につけておこう。

生徒

これからはクラスを作るときに、まずPrivateで設計してからPublicを考えるようにしてみます。コードの書き方が変わりそうです。

先生

それができればかなりレベルが上がるよ。安全で読みやすいコードを書くために、カプセル化を意識していこう。

関連記事:
カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET Web APIのモデルバインディングと入力検証を完全解説!初心者でもわかる仕組み
New2
ASP.NET
Visual Studio CodeでASP.NET開発を始める方法|初心者向け完全ガイド
New3
VB.NET
VB.NETのコーディング規約を完全解説!初心者でもわかる読みやすいコードの基本ルール
New4
VB.NET
VB.NETで日時の丸め処理を完全マスター!秒切り捨てや四捨五入の方法
人気記事
No.1
Java&Spring記事人気No1
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説
No.2
Java&Spring記事人気No2
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.3
Java&Spring記事人気No3
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.4
Java&Spring記事人気No4
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのインストール方法まとめ!Visual Studioを使った環境構築手順
No.6
Java&Spring記事人気No6
VB.NET
VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説
No.7
Java&Spring記事人気No7
ASP.NET
ASP.NETのパスワード管理を完全解説!初心者でもわかる安全な保存と運用の基本
No.8
Java&Spring記事人気No8
VB.NET
VB.NETで戻り値を返す関数の書き方を初心者向けに解説