C# クラスのデータ メンバー (フィールドまたはプロパティ) は、プライベート、パブリック、または保護のいずれかになります。
メンバー メソッド専用のプライベート フィールドを使用し、外部に公開しないようにしたい場合はどうすればよいですか?
カプセル化などを壊すことなく、引き続きプライベート フィールドを使用できますか?
私が理解していないのは、2 つの概念です。外の世界に公開する必要があるデータと、公開する必要のないデータ (クラスの周辺) です。
クラスの構築について話しているときに、これら 2 種類のデータとは何ですか?
以下の例では、プライベート フィールド 'name' はクラスに対してプライベートですが、外部の世界から取得/設定可能です。ここでの抽象化は、「「ここに行く」のように直接公開するのではなく、アクセスまたは更新の間接的なメカニズムを追加することですか?? これは、パブリック フィールドとパブリック プロパティについて話しているときに、ここで話しているカプセル化ですか?
class Employee2
{
private string name = "Harry Potter";
private double salary = 100.0;
public string GetName()
{
return name;
}
public void SetName(string title, string fullName)
{
this.name = title + fullName;
}
public double Salary
{
get { return salary; }
}
}
class PrivateTest
{
static void Main()
{
Employee2 e = new Employee2();
// The data members are inaccessible (private), so
// they can't be accessed like this:
// string n = e.name;
// double s = e.salary;
// 'name' is indirectly accessed via method:
string n = e.GetName();
// 'salary' is indirectly accessed via property
double s = e.Salary;
}
}