C#のアクセス修飾子とは?5つの種類と使い方を徹底解説
アクセス修飾子とは
アクセス修飾子(Access Modifier)は、C#において変数や関数(メソッド)といったメンバーへのアクセス範囲(スコープ)を指定するためのキーワードです。適切なアクセス修飾子を選ぶことで、クラスのカプセル化を実現し、安全性と保守性の高いコードを書くことができます。
C#で利用できる主なアクセス修飾子は以下のとおりです。
public
public修飾子を付けたメンバーには、アクセスに関する制限が一切ありません。同じアセンブリ内はもちろん、外部のアセンブリからも自由にアクセスできます。
protected
protected修飾子を付けたメンバーへのアクセスは、そのクラス自身、およびそのクラスを継承した派生クラスに限定されます。
internal
internal修飾子を付けたメンバーは、宣言が含まれる同一アセンブリ(プログラム)内からのみアクセスできます。アセンブリの外部からはアクセスできません。
protected internal
protected internalは、protectedとinternalの両方の性質を併せ持つアクセス修飾子です。同一アセンブリ内からのアクセスに加えて、別アセンブリ内に存在する派生クラスからもアクセスが許可されます。
private
private修飾子を付けたメンバーは、宣言されたクラスの内部からのみアクセスできます。クラスの外部からprivateメンバーにアクセスすることはできません。なお、メンバーにアクセス修飾子を明示しなかった場合、既定ではprivateとして扱われます。
アクセス修飾子の一覧表
| アクセス修飾子 | アクセス範囲 |
|---|---|
| public | 制限なし(どこからでもアクセス可能) |
| protected | 宣言したクラスおよびその派生クラス内 |
| internal | 同一アセンブリ内 |
| protected internal | 同一アセンブリ内、または派生クラス内 |
| private | 宣言したクラス内のみ |
サンプルコード
ここでは、protectedアクセス修飾子を使った例を紹介します。基底クラスDemoのprotectedメンバーに、派生クラスTestからアクセスしています。
using System;
namespace MySpecifiers {
class Demo {
protected string name = "Website";
protected void Display(string str) {
Console.WriteLine("Tabs: " + str);
}
}
class Test : Demo {
static void Main(string[] args) {
Test t = new Test();
Console.WriteLine("Details: " + t.name);
t.Display("Product");
t.Display("Services");
t.Display("Tools");
t.Display("Plugins");
}
}
}実行結果
Details: Website Tabs: Product Tabs: Services Tabs: Tools Tabs: Plugins
このように、派生クラスTestから基底クラスDemoのprotectedメンバー(nameフィールドとDisplayメソッド)へ問題なくアクセスできることが確認できます。protectedは継承関係にあるクラス間で機能を共有したい場合に非常に便利な修飾子です。
-
Windows 10でBitLocker非保護の固定データドライブへの書き込みアクセスを許可・拒否する方法
Windows 10では、コンピューターが固定データドライブへデータを書き込む際に、BitLockerによる保護を必須とするポリシーを設定できます。このポリシーを有効にすると、BitLockerで保護されていないすべての固定データドライブは読み取り専用としてマウントされ、BitLockerで保護されているドライブは読み取りおよび書き込みアクセスでマウントされます。本記事では、Windows 10において、BitLockerで保護されていない固定データドライブへの書き込みアクセスを、すべてのユーザーに対して許可または拒否する方法を詳しく解説します。 はじめに確認しておくべきこと 設定作業を始める
-
「アプリケーションが保護されたアイテムへのアクセスを要求しています」エラーの解決方法
「アプリケーションが保護されたアイテムへのアクセスを要求しています」というエラーは、アプリがアクセスしようとしている項目に対して、そのユーザーまたはシステムアカウントに適切な権限が付与されていないことを意味します。このエラーは主にAVGやAvastなどのアンチウイルスソフトを使用しているWindowsシステムで発生し、Webブラウザなどのアプリを起動しようとした際にポップアップとして表示されます。さまざまなプログラムで起こりうるため、考えられるすべての原因を網羅するのは難しいのが実情です。このエラーメッセージはAVGおよびAvastセキュリティツール特有のものであるため、トラブルシューティング