カプセル化:
ulu Cit Citri · ” ” ” ” は、「1 つ以上のプロジェクトを物理的または論理的なパッケージに含めること」として定義されます。オブジェクト指向プログラミング手法では、実装の詳細へのアクセスを防ぐためにカプセル化が使用されます。つまり、実装の詳細がまとめられているため、非常に複雑なロジックをパッケージ化した後、他の人はその実装方法を理解する必要がなく、単に渡すだけで目的の結果を得ることができます。必要なパラメータ。カプセル化はアクセス修飾子を使用して実装されます。アクセス修飾子は、クラス メンバーのスコープと可視性を定義します。修 アクセス修飾子:
クラスの分類と定義のステートメントでアクセス修飾子を簡単に紹介しましたが、ここでは public、private、protected、internal、protected external へのアクセスについて詳しく説明します。 public Modifiersパブリックアクセス修飾子により、クラスはメンバー変数とメンバー関数を他の機能とオブジェクトに公開できます。すべてのパブリック メンバーには外部クラスからアクセスできます。 (メンバーへのアクセスは制限されず、サブクラスは許可され、オブジェクトも許可されます)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class student { public int Chinese=80; public int Math=67; public int English=45; //定义一个方法 public int total() { int sum = 0; sum = Chinese + Math + English; return sum; } } class teacher { static void Main(string[] args) { student stu = new student(); //实例化一个对象 Console.WriteLine("Chinese = {0}\nMath = {1}\nEnglish = {2}\nTotal = {3}",stu.Chinese,stu.Math,stu.English,stu.total()); } } }
出力結果:
上記の例では、student のすべてのメンバーはパブリック型アクセス権であるため、彼のインスタンス化されたオブジェクト stu はアクセス権を持っていますメンバー全員へ。 プライベート修飾子 プライベート アクセス修飾子を使用すると、クラスがそのオブジェクトからメンバー変数とメンバー メソッドを隠すことができます。同じクラス内のメソッドのみがそのプライベート メンバーにアクセスできます。クラスのインスタンスであっても、そのプライベート メンバーにアクセスすることはできません (そのサブクラスまたはオブジェクトによるアクセスは許可されません)。上記の例を使用してみましょう:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class student { private int Chinese=80; private int Math=67; public int English=45; private int total() { int sum = 0; sum = Chinese + Math + English; return sum; } } class teacher { static void Main(string[] args) { student stu = new student(); int Chinese = stu.Chinese; //出错了,不可访问(private) int English = stu.English; //可以访问 (public) int total = stu.total(); // 不可访问 private 方法 } } }
学生クラスの変数 Chinese および Math メソッド Total にはプライベート アクセス制限があるため、オブジェクト stu を介してアクセスすることはできません
protected 修飾子
サブクラスはその基本クラスのメンバー変数とメンバー関数。これは継承に役立ちます。 (オブジェクトへのアクセスを許可しない、クラス内のメソッドのアクセスを許可する、サブクラスのアクセスを許可する)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class student { //定义protected 类型保护 protected int Chinese=80; protected int Math=67; protected int English=45; protected int total() { int sum = 0; sum = Chinese + Math + English; return sum; } } class teacher:student //teacher 继承student类 { static void Main(string[] args) { teacher teac = new teacher(); //创建子类 teacher 对象 //全部成功访问 int Chinese = teac.Chinese; int English = teac.English; int total = teac.total(); } } }
内部修飾子
内部アクセス修飾子を使用すると、クラスがそのメンバー変数とメンバーメソッドを現在のプログラム集中 (現在のプロジェクト) に公開できます。 ) 他のメソッドとオブジェクト。つまり、内部アクセス修飾子を持つメンバーは、そのメンバーが定義されているアセンブリ (プロジェクト) 内で定義されているクラスまたはメソッドからアクセスできます。
内部修飾子を学習するには、まず Vs2010 を使用して複数のプロジェクトを作成し、プロジェクト間の参照メソッドを学習する必要があります:
まずプロジェクト ファイルを作成します: Test_internal
[OK] をクリックしてソリューション マネージャーを見つけます:ソリューション「Test_internal」(1 プロジェクト) を右クリック --->追加--->新しいプロジェクト--->ビジュアル C#--->コンソール ; name 列に Class_internal という名前を付けます。これで 2 つのプロジェクト (アセンブリ) が作成されました
実際、上で入力した名前は、定義した名前空間の名前です。コード Class_internal を開きます。は名前空間 Class_internal であり、Test_internal の名前空間は名前空間 Test_internal です。あるプロジェクトで using 名前空間を使用して別のプロジェクトのコンテンツを参照しますが、その前に、参照されるプロジェクトのパスを「参照」リストに追加する必要があります。
[参照] を右クリック ---> 参照の追加 ---> プロジェクト。 プロジェクト名リストから参照するプロジェクト名を見つけます。 ここで、「OK」をクリックすると、参照リストに Class_internal が表示されます。 Class_internal で、program.cs を開き、以下を編集します。 codeusing System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Class_internal { public class student { //定义2个 internal 访问类型与一个public访问类型 internal int Chinese=80; internal int Math=70; public int English=56; //定义一个internal 访问类型方法 internal int Total() { int sum = 0; sum = Chinese + Math + English; return sum; } static void Main(string[] args) { } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Class_internal; //引用命名空间 namespace Test_internal { class Program { static void Main(string[] args) { student stu = new student(); //实例化一个student类型 int Chinese = stu.Chinese; //出错了,internal 保护类型无法在这个项目中访问 int Math = stu.Math; //出错,同上 int English = stu.English; // 成功访问public保护类型 } } }
保護された内部修飾子
。 (よくわかりません) つまり、protectedとinternalの性質を同時に持っており、protectedアクセスはサブクラスに限定され、Internalは他のアセンブリ(プロジェクト)へのアクセスを制限します。オーバーレイの 2 つの制限、保護された型には、継承されたサブクラスを介して別のプロジェクトにアクセスできません。
上記は C# 学習日記 21 の内容です ----カプセル化とアクセス修飾子 その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。