
C#のアクセス修飾子、分かってるつもり?public, private, protectedの違いをしっかり理解して、コードをレベルアップさせよう!
C# アクセス修飾子とは?基本を理解しよう
C#におけるアクセス修飾子は、クラスやそのメンバー(フィールド、メソッドなど)のアクセス範囲を制御するためのキーワードです。適切なアクセス修飾子を使用することで、カプセル化を促進し、コードの安全性と保守性を高めることができます。C#には、public
, private
, protected
, internal
, protected internal
の5つの主要なアクセス修飾子があります。この記事では、public
, private
, protected
の3つに焦点を当てて解説します。
これらの修飾子は、コードの可読性と保守性を向上させる上で非常に重要です。適切に使用することで、外部からの不正なアクセスを防ぎ、プログラムの安定性を保つことができます。
public: どこからでもアクセス可能
public
アクセス修飾子は、最も広いアクセス範囲を持ちます。public
として宣言されたメンバーは、クラスの内部、外部、派生クラスなど、どこからでもアクセスできます。
public class MyClass
{
public int publicField;
public void PublicMethod()
{
Console.WriteLine("Public method called.");
}
}
上記の例では、publicField
とPublicMethod
は、MyClass
のインスタンスを作成したすべての場所からアクセスできます。
private: クラス内部からのみアクセス可能
private
アクセス修飾子は、最も制限の厳しいアクセス範囲を持ちます。private
として宣言されたメンバーは、そのメンバーが宣言されたクラスの内部からのみアクセスできます。派生クラスや外部のクラスからはアクセスできません。
public class MyClass
{
private int privateField;
private void PrivateMethod()
{
Console.WriteLine("Private method called.");
}
public void AccessPrivate()
{
privateField = 10; // OK: クラス内部からのアクセス
PrivateMethod(); // OK: クラス内部からのアクセス
}
}
上記の例では、privateField
とPrivateMethod
は、MyClass
の内部でのみ使用できます。AccessPrivate
メソッドは、MyClass
の内部からprivateField
とPrivateMethod
にアクセスする例を示しています。
protected: クラス自身と派生クラスからアクセス可能
protected
アクセス修飾子は、宣言されたクラス自身、およびそのクラスから派生したクラスからアクセスできます。外部のクラスからはアクセスできません。
public class MyBaseClass
{
protected int protectedField;
protected void ProtectedMethod()
{
Console.WriteLine("Protected method called.");
}
}
public class MyDerivedClass : MyBaseClass
{
public void AccessProtected()
{
protectedField = 20; // OK: 派生クラスからのアクセス
ProtectedMethod(); // OK: 派生クラスからのアクセス
}
}
上記の例では、protectedField
とProtectedMethod
は、MyBaseClass
とMyDerivedClass
からアクセスできます。MyDerivedClass
のAccessProtected
メソッドは、MyBaseClass
のprotected
メンバーにアクセスする例を示しています。
参考リンク
まとめ
C#のアクセス修飾子(public
, private
, protected
)は、クラスやメンバーのアクセス範囲を制御し、カプセル化を促進するために不可欠です。public
はどこからでもアクセス可能、private
はクラス内部のみアクセス可能、protected
はクラス自身と派生クラスからアクセス可能です。これらの修飾子を適切に使用することで、コードの安全性と保守性を高めることができます。これらのアクセス修飾子を理解し、適切に使いこなすことで、より堅牢で保守性の高いC#アプリケーションを開発できるようになります。