物件導向 封裝

2022-03-05 02:33:40 字數 2283 閱讀 5714

封裝

將具體的實現細節方法單獨放到乙個物件當中,通過修飾物件的訪問許可權,防止物件被外部直接訪問物件內部的實現細節,僅公開暴露可以訪問的物件方法。而訪問方不需要知道物件裡面具體的實現的細節,只需要知道最後物件完成了什麼行為。當物件的實現細節方法改變時訪問方不需要做任何的修改這稱封裝。

**:

1

public

class

factory216

}1718static

void main(string

args)

19

上述中,我例項化了乙個 factory 類裡面封裝了生產汽車的過程,呼叫方只需要告訴 factory 類我需要乙個汽車,factory 類就會生產一輛汽車給呼叫方法,呼叫方不需要知道整個生產汽車的過程。

封裝的作用

隔離性:被封裝好的物件外部是不能訪問物件內部的具體的實現細節,內部的實現細節改動也不會影響外部訪問方,前提是公開的訪問路徑不變的情況下。

復用性:被封裝好的物件可以被多個外部訪問,不需要重新定義乙個物件。如:公共基類 object 類,object 類裡面的公共成員可以被其所有子類使用,ado.net相關的資料訪問類及其公共成員均可被其它所有的物件使用等。

可讀性:被封裝好的物件名稱如果命名恰當,就不需要知道具體的細節,知道具體的作用就可以了。如:物件 tostring 就是轉換為字串,length 就是指長度等。

訪問修飾符

修飾符

應用於

說明

public

所有類或成員

公任何**都可以訪問該項。

protected

型別和內嵌型別的所有成員

派生類才可以訪問該項。

internal

所有類或成員

包含該程式集可以訪問該項。

private

型別和內嵌型別的所有成員

類的內部成員可以訪問該項。

protected intrnal

型別和內嵌型別的所有成員

包含該程式集和派生類和派生類可以訪問該項。

注意:public,protected 和 private 是乙個邏輯修飾符,internal 是乙個物流訪問修飾符,其邊界是乙個程式集。

型別定義可以是內部或者共有的,這取決於你是否希望在包含型別d的程式集外部訪問它:

1

public

class

factory

2

不能將 private,protected 和 protected intrnal 修飾型別。因為這些修飾符對於包含在命名空間中的型別沒有意義。因此這些修飾符只能應用型別的成員。

1

private

class

factory

2

其他修飾符

上述**中應用於型別的成員,而且有不同的用途。在應用於型別時,還有幾個修飾符也是有意義的。

修飾符

應用於

說明

new函式成員

成員簽名與基類相同隱藏繼承成員。

static

所有成員

成員不做型別成員的具體例項,不能被型別例項化的成員。

virtual

僅函式成員

成員可以被派生類重寫。

abstract

僅函式成員

虛擬成員定義成員簽名,都沒有提供具體實現的方法。

override

僅函式成員

成員重寫虛擬成員或抽象方法。

sealed

類,方法和屬性

對於類不能繼續自密封類,對於屬性和方法,成員重寫已繼承的虛擬成員,但任何派生類中的任何成員不能被重寫。該修飾符必須和 override 一起使用。 

extern

僅靜態[dlllmport]方法

用於宣告在外部實現的方法。 extern 修飾符的常見用法是在使用 interop 服務調入非託管**時與 dllimport 特性一起使用。 在這種情況下,還必須將方法宣告為 static 。

partial

類和結構

整個程式集兩個以上地方定義另個相同名稱的類或者結構。

原始碼

物件導向 封裝

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了 物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。面向過程 優點 效能比物件導向高,因為類呼叫時需要例項化,開銷比...

物件導向(封裝)

物件導向 封裝 封裝可以被認為是乙個保護屏障,防止該類的 和資料被外部類定義的 隨機訪問。如下 public class test public int getage public string getname public string getidnum public void setage in...

物件導向 封裝

car類 public class car 方法 public void salecar set 改屬性值。用了private之後,main方法只能呼叫,在car這個類裡才能修改private修飾的變數 傳入乙個double型別的引數 pr,main方法呼叫setprice方法,傳入pr的值,pr在...