VB.NETでカプセル化を完全ガイド!初心者でもわかるクラスのPrivate・Public・Protected
生徒
「VB.NETのクラスってよく聞きますが、その中でカプセル化という仕組みがあると聞きました。どういうものなんですか?」
先生
「カプセル化とは、クラスの中のデータを守りながら必要なところだけ公開する仕組みのことだよ。VB.NETでも重要な考え方なんだ。」
生徒
「データを守るって、具体的にはどうやってやるんですか?VB.NETで難しい操作が必要ですか?」
先生
「難しくないよ。VB.NETではPrivate、Public、Protectedという“アクセス修飾子”を使うだけで簡単にカプセル化できるんだ。実際にどう使うのか見ていこう。」
1. カプセル化とは?VB.NETでなぜ必要なのか
カプセル化とは、プログラミングでとても大切な考え方で、クラスの内部にある変数やデータを外部から勝手に書き換えられないように守る仕組みです。例えば、銀行口座の残高を誰でも自由に変更できたら大変なことになりますよね。それを防ぐために、必要な操作だけ公開し、不必要な部分は隠しておきます。
VB.NETのカプセル化では、Public・Private・Protectedというキーワードを使います。これらは「アクセス修飾子」と呼ばれ、何をどこまで見せるか決める役割があります。
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:誰でも使えるように公開する
Public(パブリック)は最も開かれたアクセス修飾子で、どこからでもアクセスできます。外部に公開したいメソッドや変数に使います。例えば、「名前を表示するメソッドをゲーム全体で使いたい」などの場面です。
Public Class Player
Public Name As String
Public Sub ShowName()
Console.WriteLine("プレイヤー名:" & Name)
End Sub
End Class
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でカプセル化を使うとどう便利?
カプセル化は、単に変数を隠すだけの仕組みではありません。プログラムが複雑になってきたときに「予期しない動作を防ぐ」「クラスの内部構造を変更しても外部に影響を出さない」という大きなメリットがあります。
具体的には次のような点が便利です。
- 勝手にデータを書き換えられないので安全
- 変更に強いプログラムになる
- どこから操作しているか明確になり、バグを減らせる
- 必要な部分だけ公開することでクラスの役割が分かりやすくなる
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というメソッドを通して操作することで、安全なデータ管理ができます。