C 中的封裝與繼承

2021-09-25 23:17:27 字數 1446 閱讀 5732

封裝

封裝指的是把類內部的資料隱藏起來,不讓物件例項直接對其進行操作。c#中提供了屬性機制來對類內部的狀態進行操作。在c#中,封裝可以通過public、private、protected和internal等關鍵字來體現。下面通過例子來實現以下功能,具體的方法如下:

//不使用封裝特性來定義乙個person類

public

class

perason

當把字段定義為公共型別時,外部物件可以對類內部的資料進行任意的操作,很可能導致當前值不符合系統的業務邏輯。下面用**來演示公共資料存在的問題。

class

program }

儘管把-5賦給person的_age屬性沒有引用編譯錯誤,但這並不符合業務邏輯,因為在現實生活中,人的年齡不可能為負值。當我們把類的字段定義為公共型別時,外部物件可以直接對類內部的資料進行操作,此時無法對這些操作進行一些邏輯判斷,這也就是問題的所在。

物件導向程式設計中的封裝特性,是一種保護狀態資料完整性的分,在物件導向程式設計中,應更多的私有資料字段。c#提供屬性機制老對這種私有的字段資料進行間接的操作,並且可以在屬性的定義中加入更多的邏輯判斷。利用封裝技術,我們可以有效地對外部隱藏類內部的資料,從而避免資料損壞。下面用**演示一下使用封裝技術後類的定義過程。

public

class

perason

set }

public

intage

set

} }

} 使用了封裝技術之後,外部資料只能對屬性進行操作。如果不符合邏輯的值賦給屬性age,

就會在執行時丟擲異常,客戶端呼叫可以通過捕獲該異常,進行相關的錯誤處理操作。

繼承

在c#中,乙個類可以繼承另外乙個已有的類,被繼承的型別稱為基類(或者父類),繼承的型別稱為派生類(或子類),子類將獲得基類除建構函式和析構函式以外的所有成員。此外,靜態類是密封的,也不能被繼承。c#僅支援派生於乙個類,但c#可以繼承多個介面,繼承的**如下所示:

class

ptogram

", horse.age);

sheep sheep =

newsheep();

sheep.age = 1;

console.writeline(

"羊的年齡為:"

, sheep.age);

console.read(); }

} //基類

public

class

animal

set_age = value; }

} }

//馬(子類)

public

class

horse

: animal

//羊(子類)

public

class

sheep

: animal

C 中的封裝 繼承

一 封裝 封裝就是將抽象得到的資料和行為相結合,幸好曾乙個有機的整體,將資料的源 進行有機的結合,形成類。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,只需要通過外部介面,特定的訪問許可權來使用類的成員。封裝可以隱藏實現細節,使 模組化。includeusing namespa...

繼承與封裝

1.實現封裝的具體步驟 1 屬性私有化 2 加入getter setter方法 3 加入流程控制語句 2.方法過載 1 方法名相同 2 引數項相同3 與返回值 訪問修飾符無關 3.封裝的好處 隱藏類的實現細節 讓使用者只能通過程式的規定方法來訪問資料 可以方便的計入訪問控制語句,限制不合理操作。4....

封裝與繼承

封裝 兩個大致原則 把屬性藏起來 對外提供介面,來訪問或者操作屬性 封裝的步驟 把屬性設定為private 提供getter setter 方法 操作屬性 設定屬性的合法性 包 關鍵字 package 作用 注意事項 建立包的兩種方式 右擊src 導包 包的注意事項 必須使用完整類名來區分 訪問修飾...