C# アクセス修飾子
アクセス修飾子
ここまでで、多くの例に登場するpublic
キーワードについてはよくご存じでしょう。
{.language-csharp .techis-white}
<strong>public</strong>
string color;
public
キーワードはアクセス修飾子で、クラス、フィールド、メソッド、およびプロパティのアクセスレベル/可視性を設定するために使用されます。
C#には、次のアクセス修飾子があります。
修飾子 | 説明 |
---|---|
public |
コードはすべてのクラスでアクセス可能です |
private |
コードは同じクラス内でのみアクセス可能です |
protected |
コードは、同じクラス内またはクラス内でアクセス可能です。 そのクラスから継承されます。詳しくはこちらの継承の章を参照して下さい。 |
internal |
コードは、それ自体のアセンブリ内でのみアクセスできますが、別のアセンブリからはアクセスできません。 これについては、後の章で詳しく説明します |
次の2つの組み合わせもあります。protected internal
とprivate protected
。
今のところ、public
とprivate
修飾子に焦点を当てましょう。
プライベート修飾子
private
アクセス修飾子でフィールドを宣言すると、同じクラス内でのみアクセスできます。
クラスの外にアクセスしようとすると、エラーが発生します。
例
{.language-csharp .techis-white .techis-border-red}
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
出力は次のようになります。
'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used
公開修飾子
public
アクセス修飾子でフィールドを宣言すると、すべてのクラスからアクセスできます。
例
{.language-csharp .techis-white}
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
出力は次のようになります。
Mustang
これは、「機密」データがユーザーから確実に隠されるプロセスです。これは、フィールドをプライベートとして宣言することによって行われます。
アクセス修飾子を使用する理由
クラスメンバーの可視性(個々のクラスおよびクラスメンバーのセキュリティレベル)を制御します。
"カプセル化"を実現するために - これは、「機密」データがユーザーから隠されていることを確認するプロセスです。これは、フィールドをprivate
として宣言することによって行われます。これについては、次の章で詳しく説明します。
注:アクセス修飾子を指定しない場合、デフォルトではクラスのすべてのメンバーはprivate
になります。
例
{.language-csharp .techis-white}
class Car
{
string model; // private
string year; // private
}
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。