封裝C#

WBOY
發布: 2024-09-03 15:05:35
原創
470 人瀏覽過

C#中的封裝被定義為內建的C#程式語言功能,以實現封裝的功能。為了理解封裝功能,它被定義為將一個或多個項目包裝到一個單元中,並確保它們具有邏輯或物理相似性,這就是將它們封裝在一起的理由。它們被打包在一起以確保防止存取實現細節,並且透過這樣做,可以防止對資料的更改。存取詳細資訊的唯一方法是透過類別中的 getter 函數,而修改詳細資訊的唯一方法是透過 setter 函數。將收集的資料成員和成員函數封裝到單一實體中的實體稱為類別。

C# 封裝語法

當 sprintf 成為一種查看儲存可列印訊息而不是在控制台中列印訊息的替代方法時,sprintf 的想法開始流行起來,以便可以根據應用程式的需要隨時引用它們。 sprintf 代表“字串列印”,這裡我們將從 C 語言中的 sprintf 函數的語法角度來看一下,並了解語法中的形參或參數。

1. C# 中要封裝的變數宣告。

private < data type > < variable name >;
登入後複製

2.變數的Getter函數,C#封裝。

get
{
return < variable name >;
}
登入後複製

3.變數的Setter函數,C#封裝。

set
{
return < variable name >;
}
登入後複製

4.將在 C# 中封裝的類別的聲明。

public class < class name >{
// Declare the elements of the public class.
}
登入後複製

C# 中的封裝是如何運作的?

  • 當應用程式中的資料很容易由於任何其他人可能發生的不明顯的錯誤而被損壞時,封裝的概念就應運而生了。由於資料是物件導向程式設計概念中的關鍵元素,因此我們需要避免任何外部函數對資料的意外修改,同時還要保護資料免受任何惡意攻擊。
  • 封裝資料的方式是將元素定義為私有,並使其僅允許透過兩種方式進行修改。我們現在將詳細討論這兩種方法,以全面了解封裝的工作原理。第一種方法是透過訪問器和修改器。當建立一個類別時,我們將一些元素設為私有,這意味著這些元素無法從類別外部的元素存取。現在,我們建立兩個函數,確保如果需要進行任何修改甚至檢索,它們將由存取器(用於檢索)和修改器(用於修改)來完成。這些函數被定義為公用函數,以便本機類別以外的任何函數/類別都可以存取修改器和存取器。另一種方法是使用屬性,有 2 個屬性 get 和 set 分別允許檢索和修改元素。
  • 透過這兩種方式,當透過定義包含私有元素的類別的實例在另一個類別中呼叫所需的存取器時。預設情況下,此實例包含父類別(該實例所屬的類別)的所有公用函數。現在使用公共屬性/存取器/修改器,呼叫所需的任務。呼叫後,根據任務完成的選擇,為對應的任務分配檢索或修改。這種工作可以被認為類似於一個組織,只有組織中的某些人可以存取財務記錄(最機密的資訊),如果需要檢索或修改任何條目,則稱為財務部門的實例並分配了相應的工作。

C# 封裝範例

下面給出了 C# 封裝的範例:

範例#1

嘗試使用存取器和修改器存取類別中的私有變數(此程式碼中預計會出現錯誤)。

代碼:

using System;
namespace EmployeeApplication {
class Employee {
private string name;
private string dept;
public string GetName() {
return name;
}
public void SetName(string n) {
name = n;
}
public string GetDept() {
return name;
}
public void SetDepartname(string d) {
dept = d;
}
public void Display() {
Console.WriteLine("Name: {0}", name);
Console.WriteLine("Department: {0}", dept);
}
}
class ExecuteRectangle {
static void Main(string[] args) {
Employee e = new Employee();
e.name = "AmKy";
e.dept = "EduCBA";
e.Display();
Console.ReadLine();
}
}
}
登入後複製

輸出:

封裝C#

範例#2

使用正確的存取器和修改器類型來存取和修改類別的元素。

代碼:

using System;
namespace EmployeeApplication {
class Employee {
private string name;
private string dept;
public string GetName() {
return name;
}
public void SetName(string n) {
name = n;
}
public string GetDept() {
return name;
}
public void SetDepartname(string d) {
dept = d;
}
public void Display() {
Console.WriteLine("Name: {0}", name);
Console.WriteLine("Department: {0}", dept);
}
}
class ExecuteRectangle {
static void Main(string[] args) {
Employee e = new Employee();
e.SetName("AmKy");
e.SetDepartname("EduCBA");
e.Display();
Console.ReadLine();
}
}
}
登入後複製

輸出:

封裝C#

範例#3

使用屬性進行封裝。

代碼:

using System;
namespace EmployeeApplication {
class Employee {
private string name;
private string dept;
public string DeptProp {
get {
return dept;
}
set {
dept = value;
}
}
public string EmpName {
get {
return name;
}
set {
name = value;
}
}
public void Display() {
Console.WriteLine("Name: {0}", name);
Console.WriteLine("Department: {0}", dept);
}
}
class ExecuteRectangle {
static void Main(string[] args) {
Employee e = new Employee();
e.EmpName = "Employee 2";
e.DeptProp = "Finance";
e.Display();
Console.ReadLine();
}
}
}
登入後複製

輸出:

封裝C#

結論

在本文中,我們透過範例了解如何在C# 中完成封裝,其中我們也了解如何從其他類別存取任何私有對象,即使是透過父類別的實例,也可能會導致錯誤並使程式碼無法運行。

以上是封裝C#的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!