Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dilindungi dalam C#

Dilindungi dalam C#

PHPz
PHPzasal
2024-09-03 15:28:471206semak imbas

Dalam artikel ini, kita akan melihat bagaimana protected dalam c# boleh dilaksanakan secara terperinci. Dengan bantuan pengubah suai akses, kami boleh menyekat tahap kebolehaksesan parameter dan kelas. Terdapat pengubah akses berikut dalam C#

  • Awam
  • Persendirian
  • Dilindungi
  • Dalaman

Pengubahsuai Dilindungi dalam C#

Dalam c#, kami boleh menggunakan pengubah suai yang dilindungi untuk menentukan bahawa akses terhad kepada jenis yang mengandungi. Selain itu, kami boleh menggunakannya untuk jenis yang diperoleh daripada kelas yang mengandungi. Perkataan dilindungi bermaksud ia boleh diakses atau kelihatan kepada dirinya sendiri dan juga kepada kelas terbitan.

Dengan bantuan ahli atau jenis ini hanya boleh diakses oleh kod yang digunakan dalam kelas yang sama atau yang digunakan dalam kelas terbitan. Kata kunci yang dilindungi adalah antara pengubah peribadi dan awam. Ia hampir sama dengan pengubah suai persendirian tetapi ia membenarkan ahli untuk mengakses kelas terbitan. Kami kebanyakannya menggunakan kata kunci yang dilindungi apabila kami ingin memberikan akses kepada harta kanak-kanak kepada ibu bapa mereka. Jadi kita boleh menggunakan semula logik dengan bantuan kata kunci yang dilindungi.

Contoh:

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 (); }
}

Pertimbangkan 2 kelas, Ujian dan Ujian1. Ujian Kelas1 diperoleh daripada Ujian. Jika kita melihat di dalam Ujian kelas, kita dapat melihat dua medan int telah diisytiharkan. 1 dilindungi dan 1 peribadi.

Dalam kelas B Test1 kita boleh mengakses int yang dilindungi, tetapi kita tidak boleh mengakses int peribadi. Jadi pengubah suai yang dilindungi memberi kami akses tambahan dalam kelas terbitan. Jadi dengan bantuan kata kunci yang dilindungi, kami boleh mengakses medan yang dilindungi termasuk semua kelas terbitan.

Kelas juga boleh dilindungi. Di bawah ialah contoh cara mengisytiharkannya

Sintaks:

public class Test
{
protected class Child
{
}
}

Hanya dalam kelas bersarang, kami boleh mengisytiharkan kelas sebagai dilindungi. Kami tidak boleh mentakrifkannya di dalam ruang nama.

Contoh untuk Dilaksanakan Dilindungi dalam C#

Di bawah ialah contoh untuk menunjukkan cara kita boleh melaksanakan protected dalam C#:

Contoh #1 – Tanpa Melaksanakan Kelas Kanak-Kanak

Kod:

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();
}
}
}

Dalam contoh di atas, rentetan diisytiharkan sebagai dilindungi. Program ini akan menimbulkan ralat kerana protected akan menyembunyikan ahlinya daripada kelas lain. Jadi ia hanya boleh diakses dalam kelas kanak-kanak.

Contoh #2 – Melaksanakan dengan Pewarisan

Kod:

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();
}
}
}

Dalam contoh di atas, kelas Induk terdiri daripada ahli yang dilindungi. Dilindungi digunakan untuk mengisytiharkan rentetan. Kini kelas anak diperoleh daripada kelas induk dan konsep pewarisan digunakan untuk mengakses ahli yang dilindungi.

Output:

Dilindungi dalam C#

Contoh #3

Kod:

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;
}
}
}

Dalam contoh di atas, kelas induk mengandungi rentetan peribadi dan dilindungi. Kelas kanak-kanak diperoleh daripada kelas induk. Show() tidak boleh mengakses peribadi tetapi ia boleh mengakses dilindungi. Objek kelas kanak-kanak digunakan untuk memanggil kaedah. Protected digunakan untuk melindungi ahli daripada diakses di luar kelas.

Output:

Dilindungi dalam C#

Kami juga boleh mengisytiharkan pembina sebagai dilindungi. Jadi dengan mengisytiharkan mana-mana pembina sebagai dilindungi, kita boleh memanggilnya daripada subkelas.

Sintaks:

public class TEst : Test1
{
public Test() : base() // here we can Call the protected base constructor
{
}
}

Kami tidak boleh memanggil kaedah yang dilindungi. Kita boleh memanggil pembina yang dilindungi daripada kelas terbitan.

Pengubahsuai Akses Dalaman Dilindungi

Dengan bantuan dalaman yang dilindungi, kami boleh menentukan bahawa akses terhad kepada jenis semasa yang diperoleh daripada kelas yang mengandungi. Jadi ini memastikan bahawa ahli dan jenis boleh diakses melalui kod dalam kelas yang sama atau oleh kelas terbitan yang ditulis dalam perhimpunan lain.

Contoh:

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();
}
}
}

Output:

Dilindungi dalam C#

Kepentingan Dilindungi dalam C#

Kata kunci yang dilindungi berguna kerana pembolehubah jenis ini boleh diakses oleh kod yang digunakan dalam kelas yang sama. Ia berguna apabila kita ingin memberikan kuasa kepada kelas kanak-kanak supaya ia boleh mengakses ahli kelas induk. Jadi dalam erti kata itu, adalah penting dalam mencapai kebolehgunaan semula kod.

Kesimpulan

Jadi kita boleh menggunakan pembolehubah dilindungi dan mengaksesnya menggunakan konsep pewarisan. Ia boleh digunakan di mana ahli boleh diakses oleh kelas itu sendiri atau subkelas.

Atas ialah kandungan terperinci Dilindungi dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:C# LinkedListArtikel seterusnya:C# LinkedList