C#のプライベート変数(private)とは?使い方とアクセス制御をわかりやすく解説
C#におけるprivate(プライベート)アクセス修飾子は、クラスのメンバ変数やメソッドを外部から隠蔽するための仕組みです。プライベートとして宣言されたメンバにアクセスできるのは、同じクラス内のメンバーだけです。たとえそのクラスのインスタンスを作成しても、外部から直接プライベートメンバへアクセスすることはできません。
プライベート変数の宣言方法
プライベート変数は、変数の宣言時にprivateキーワードを付けるだけで作成できます。
private double length;
外部からアクセスするとどうなる?
実際に、privateに設定されたlength変数にクラス外からアクセスしようとすると、コンパイル時に次のようなエラーが発生します。
'BoxApplication.Box.length' is inaccessible due to its protection level
このエラーは「保護レベルによりアクセスできない」ことを意味しており、private修飾子によって情報が正しく隠蔽されていることを示しています。
サンプルコード
以下は、Boxクラスでプライベート変数を使用し、publicなセッターメソッドとゲッターメソッドを通じて値を操作する完全なサンプルです。
using System;
namespace BoxApplication {
class Box {
private double length; // 箱の長さ
private double breadth; // 箱の幅
private double height; // 箱の高さ
public void setLength( double len ) {
length = len;
}
public void setBreadth( double bre ) {
breadth = bre;
}
public void setHeight( double hei ) {
height = hei;
}
public double getVolume() {
return length * breadth * height;
}
}
class Boxtester {
static void Main(string[] args) {
Box Box1 = new Box(); // Box型のBox1を宣言
Box Box2 = new Box();
double volume;
// クラス外からprivate変数にアクセスするとエラーになる
// Box1.length = 10;
// Box1 のサイズ設定
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// Box2 のサイズ設定
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// Box1 の体積を表示
volume = Box1.getVolume();
Console.WriteLine("Volume of Box1 : {0}", volume);
// Box2 の体積を表示
volume = Box2.getVolume();
Console.WriteLine("Volume of Box2 : {0}", volume);
Console.ReadKey();
}
}
}
実行結果
Volume of Box1 : 210
Volume of Box2 : 1560
ポイントまとめ
- privateを付けたメンバは、同じクラス内からのみアクセス可能です。
- コメントアウトされた
Box1.length = 10;のように、クラス外から直接代入しようとするとコンパイルエラーになります。 - 外部から値を設定・取得したい場合は、
setLength()やgetVolume()のようなpublicメソッドを経由します。 - このように内部データを隠蔽し、公開メソッドを通じてのみ操作させる設計はカプセル化と呼ばれ、オブジェクト指向プログラミングの重要な概念の一つです。
-
Pythonのクラスに「プライベート」変数は存在するのか?徹底解説
結論:Pythonには厳密な意味でのプライベート変数は存在しない Pythonのクラスには、他の言語(JavaやC++など)のような厳密な意味での「プライベート変数」は存在しません。Pythonでは、すべての変数とメソッドがデフォルトでパブリック(公開)として扱われます。 しかし、アンダースコアを使った命名規則によって、プライベート変数を「エミュレート(模倣)」することは可能です。これにより、クラス外部から変数が見えにくくなったり、アクセスしにくくなったりします。 シングルアンダースコア(_):セミプライベートな変数 変数名の先頭にシングルアンダースコア _ を付けると、その変数は「セミプラ
-
Pythonクラスのパブリック変数とプライベート変数とは?違いと使い方を解説
パブリック変数(公開変数)とはPythonでは、クラス外から任意の変数へアクセスしたり、メンバーメソッドを呼び出したりすることが言語レベルで制限されていません。つまり、Pythonのすべての変数とメソッドはデフォルトでパブリック(公開)です。そのため、変数やメソッドを公開したい場合は、特別な記述をする必要がありません。以下の例を見てみましょう。コード例class Mug: def __init__(self): self.color = None self.content = None def fill(self, beverage):