C# で保護されている

PHPz
リリース: 2024-09-03 15:28:47
オリジナル
1260 人が閲覧しました

この記事では、C# で保護を実装する方法を詳しく見ていきます。アクセス修飾子の助けを借りて、パラメーターとクラスのアクセシビリティ レベルを制限できます。 C#

には以下のアクセス修飾子があります。
  • 公開
  • プライベート
  • 保護されています
  • 内部

C# で保護された修飾子

C# では、 protected 修飾子を使用して、アクセスが含まれる型に制限されることを指定できます。また、それを含むクラスから派生した型にも使用できます。 「保護された」という言葉は、それ自体および派生クラスからもアクセスまたは参照できることを意味します。

このメンバーまたは型を使用すると、同じクラスで使用されるコードまたは派生クラスで使用されるコードによってのみアクセスできます。キーワード protected は、private 修飾子と public 修飾子の間にあります。これはプライベート修飾子とほぼ同じですが、メンバーが派生クラスにアクセスできるようになります。子のプロパティへのアクセスを親に許可する場合は、主に protected キーワードを使用します。したがって、保護されたキーワードを使用してロジックを再利用できます。

例:

using System;
class Test
{
protected int _x; private int _y;
}
class Test1 : Test
{
public Test1 ()
{
// In this we can  access the variable protected int but we cannot access private int variable
Console.WriteLine(this._x);
}
}
class Program
{
static void Main()
{ Test1 b = new Test1 (); }
}
ログイン後にコピー

Test と Test1 という 2 つのクラスについて考えます。クラス Test1 は Test から派生します。 Test クラス内を見ると、2 つの int フィールドが宣言されていることがわかります。 1 つは保護され、1 つは非公開です。

クラス B Test1 では、protected int にアクセスできますが、private int にはアクセスできません。したがって、protected 修飾子により、派生クラスで追加のアクセスが可能になります。したがって、 protected キーワードを使用すると、すべての派生クラスを含む protected フィールドにアクセスできます。

クラスを保護することもできます。以下に宣言方法の例を示します

構文:

public class Test
{
protected class Child
{
}
}
ログイン後にコピー

ネストされたクラスでのみ、クラスを保護されたものとして宣言できます。名前空間内で定義することはできません。

C# での Protected の実装例

以下は、C# で protected を実装する方法を示す例です:

例 #1 – 子クラスを実装しない

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class demo
{
// String Variable declared as protected
protected string name;
public void print()
{
Console.WriteLine("\name is " + name);
}
}
class Program
{
static void Main(string[] args)     // main method
{
demo d = new demo();
Console.Write("Enter your name:\t");
d.name = Console.ReadLine();
d.print();
Console.ReadLine();
}
}
}
ログイン後にコピー

上記の例では、文字列は保護されていると宣言されています。 protected はそのメンバーを他のクラスから隠すため、このプログラムではエラーが発生します。したがって、子クラスでのみアクセス可能です。

例 #2 – 継承を使用した実装

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Demo
{
protected string name = "Protected Keyword";
protected void Display(string val)
{
Console.WriteLine("This is " + val);
}
}
class Program : Demo   // inheritance
{
static void Main(string[] args)
{
Program program = new Program();
// Accessing protected variable
Console.WriteLine("This is " + program.name);
// Accessing protected function
program.Display("protected example");
Console.ReadLine();
}
}
}
ログイン後にコピー

上記の例では、親クラスは保護されたメンバーで構成されています。 Protected は文字列を宣言するために使用されます。現在、子クラスは親クラスから派生し、継承の概念を使用して保護されたメンバーにアクセスします。

出力:

C# で保護されている

例 #3

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Parent
{
private String Private = "My name is John";    // string declared as private
protected String Protected = "My name is Dan"; //  string declared as protected
}
class Child : Parent // inheritance
{
public void Show()
{
Console.WriteLine(Protected);
}
}
class Program
{
static int Main(string[] args)  // main method
{
Child child = new Child();    // child object
child.Show();
Console.ReadKey();
return 0;
}
}
}
ログイン後にコピー

上記の例では、親クラスにはプライベート文字列と保護された文字列が含まれています。子クラスは親クラスから派生します。 Show() は private にはアクセスできませんが、protected にはアクセスできます。メソッドの呼び出しには子クラス オブジェクトが使用されます。 Protected は、クラス外からメンバーがアクセスされないように保護するために使用されます。

出力:

C# で保護されている

コンストラクターを保護されたものとして宣言することもできます。したがって、任意のコンストラクターを保護されたものとして宣言することで、サブクラスからそれを呼び出すことができます。

構文:

public class TEst : Test1
{
public Test() : base() // here we can Call the protected base constructor
{
}
}
ログイン後にコピー

保護されたメソッドを呼び出すことはできません。派生クラスから保護されたコンストラクターを呼び出すことができます。

保護された内部アクセス修飾子

保護された内部の助けを借りて、アクセスが、含まれているクラスから派生した現在の型に制限されるように指定できます。したがって、これにより、同じクラス内のコード、または別のアセンブリに記述された派生クラスによってメンバーと型にアクセスできることが保証されます。

例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Demo
{
protected internal string name;    // variable is declared as protected internal
public void print()
{
Console.WriteLine("name is " + name);
}
}
class Program
{
static void Main(string[] args) // main method
{
Demo d = new Demo();
Console.Write("Enter your name:\t");
// Accepting value in protected internal variable
d.name = Console.ReadLine();
d.print();
Console.ReadLine();
}
}
}
ログイン後にコピー

出力:

C# で保護されている

C# における Protected の重要性

このタイプの変数には同じクラスで使用されるコードからアクセスできるため、Protected キーワードは便利です。これは、子クラスに親クラスのメンバーにアクセスできるように権限を与えたい場合に便利です。その意味では、コードの再利用性を実現する上で重要です。

結論

そのため、変数で protected を使用し、継承の概念を使用してそれらにアクセスできます。これは、クラス自体またはサブクラスからメンバーにアクセスできる場合に使用できます。

以上がC# で保護されているの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート