C 中物件導向程式設計技術 結構與類

2022-08-24 14:27:13 字數 3749 閱讀 2433

1,結構計算

結構是一種可以包含資料成員和放方法員的值型別資料結構。為結構分配資料時不需要從託管堆中分配記憶體,結構型別的變數直接包含了該結構的資料。結構中可以包含建構函式、常量、字段、方法、屬性、運算子、事件和巢狀型別等,但如果要同時包括上述幾種成員,則應該考慮使用類。

使用結構對於小的資料結構特別有用,能節省大量的分配記憶體,如複數和座標系中的點。

結構有以下特點:

(1):結果給是值型別

(2):向方法傳遞資料時,是通過傳值方式傳遞的,而不是作為引用傳遞的

(3):結構的例項化不能用new運算子

(4):結構可以宣告建構函式,但它們必須帶引數

(5):乙個結構不能從另乙個結構或類繼承。所有的結構都直接繼承自system.valuetype,而system.valuetype繼承自system.object

(6):結構可以實現介面

(7):在結構中初始化例項欄位是錯誤的

由於結構的副本由編譯器自動建立和銷毀,因此不需要使用預設建構函式和析構函式。實際上,編譯器通過為所有字段賦予預設值類實現預設建構函式。

c#中,使用struct關鍵字來定義語法,語法格式如下:

【結構修飾符】struct 【結構名】

例子:

1

public

struct rect//

定義乙個矩形結構217

///18

///計算矩形的面積

19///

20///

矩形面積

21public

double

area()

2226}27

private

void button1_click(object

sender, eventargs e)

2843

catch

(exception ex)

4448

}49 }

結構和類的區別:

結構是值型別,它在棧上分配資料,並且結構的賦值將分配產生乙個新的物件。而類是引用型別,它在堆上分配資料,對類的物件進行賦值時只複製了引用,他們都指向同乙個實際物件分配的記憶體。

2,類繼承

繼承是物件導向程式設計最重要的特徵之一,任何類都可以從另乙個類繼承,這就是說,這個類擁有他繼承的類的所有成員。在物件導向程式設計中,被繼承的類叫父類或基類。c#中提供了類的繼承機制,但只支援但基類繼承,不支援多重繼承,即在c#中一次只允許繼承乙個類,不能同時繼承多個類。

了用類的繼承機制,程式開發人員可以在已有類的基礎上構造新類,這一特性使得類支援分類的概念。例如,使用者可以通過增加、修改或替換類中的方法可以對這個類進行擴充,以適應不同的應用要求。在日常生活中很多東西都很有條理,那是因為它們存在很好的層次分類,如果不用層次分類,則需要對每個物件都定義其所有的性質。使用繼承後,每個物件就可以定義自己的特殊性質,每一層的物件只需定義本身的性質,其他性質可以從上一層繼承下來。

繼承乙個類時,類成員的可訪問性是乙個重要問題。子類(派生類)不能訪問基類的私有成員,但是可以訪問其公共成員,這也就是說,只要使用public宣告類成員時,就可以讓乙個類成員被基類和子類(派生類)同時訪問,同時也可以被外部的**訪問。

為了解決基類成員訪問問題,c#還提供了另一種可訪問性,即protected,只有子類(派生類)才能訪問protected成員,基類和外部**都不能訪問protected成員。

除了可以定義成員的保護級別外,還可以為成員定義繼承行為。基類的成員可以是虛擬的,成員可以有繼承它的類重寫。子類(派生類)可以提供成員的其他執行**,這種執行**不會刪除原來的**,仍可以在類中訪問原來的**,但外部**不能訪問它們。如果沒有提供其他執行方式,外部**就直接訪問基類中成員的執行**。

另外,基類還可以定義為抽象。抽象類不能直接例項化,要使用抽象類必須繼承這個類,然後再例項化。

c#中實現繼承的格式如下:

class derivedclass:baseclass{}

例子:

1

class trapezia

16set

1720}21

///22

///下底

23///

24public

double

xd25

31set

3235}36

37///

38///高39

///40

public

double

height

4147

set48

51} 52}

53class trapeziaarea : trapezia//

自定義類,該類繼承自trapezia

5463 }

類可以從另乙個類繼承,也就是說,這個類擁有它繼承的類的所有成員(除構造方法外)。利用類的繼承機制,可以在已有的類的基礎上構造新類,從而更快的提高程式開發的效率。

3,封裝類

物件導向程式設計中,大多數都是以類作為資料封裝的基本型別。類將資料和運算元據的方法結合成乙個單位。設計類時,不希望直接訪問類中的資料,而是希望通過方法來訪問資料,這樣就可以達到封裝資料的目的,方便以後的維護公升級,也可以在運算元據時多一層判斷。

此外,封裝還可以資料訪問的許可權問題,可以使用封裝將資料隱藏起來,形成乙個封閉的空間,然後設定哪些資料是能在這空間中使用,哪些資料可以在空間外使用。如果乙個類中包含敏感資料,有些人可以訪問,有些人不可以訪問,如果不對這些資料的訪問加以限制,後果將會非常嚴重。所以在編寫程式時,要對類的成員使用不同的訪問修飾符,從而定義它們的訪問級別。

c#中的類可以使用類來達到資料封裝的效果,這樣就可以使資料與方法封裝單一元素,以便於通過方法訪問資料。

封裝性是物件導向過程中最基本的乙個特性,在c#中使用封裝性時。主要是針對於介面和類來說的。對於一些程式中使用通用的屬性、方法等,通常都封裝到介面或者類中,從而提高**的重用率。

什麼是物件導向程式設計技術?

物件導向程式設計技術也叫oop技術,它是計算機軟體開發中的一種新方法、新思想。在過去面向過程程式設計中,經常將所有的**都包含在幾個模組中,這樣,當做某些修改時,常常牽一髮而動全身,不容易開發和維護。使用物件導向程式設計技術時,也可以將軟體分為幾個模組,每個模組都有特定的功能,但是,模組之間是相互獨立,同時又是相互聯絡的,模組的**可以重用,這樣大大增加了**的使用率,有利於軟體的開發和維護。

C 物件導向程式設計技術(一)

物件導向程式設計 object oriented programming,oop 的基本思想是 將資料及處理這些資料的操作都封裝到乙個稱為類 class 的資料結構中。一 類和物件 1.類的宣告 類修飾符 class 類名 基類類名 注意 和 c 不同,c 不將類的宣告與實現分開。不會區分標頭檔案和...

C 中物件導向程式設計技術的應用 二

1,重寫虛方法 1 虛方法 虛方法就是允許被其子類重新定義的方法,在宣告時,需要用virtual修飾符 注意 1,virtual修飾符不能與static abstract或者override修飾符同時使用 2,由於虛方法不能是私有的,所有virtual修飾符不能與private修飾符同時使用 例如 ...

物件導向程式設計技術基礎彙總

知識點 掌握程度 語句了解 陣列掌握 建構函式 掌握字段 屬性 掌握靜態類,密封類,抽象類 掌握介面 熟練繼承 掌握1.console.writeline 列印到控制台並換行 2.c 型別 值型別 引用型別 3.namespace 不同資料夾下的類可以屬於同乙個namespace 4.字串相加 使用...