物件導向 類 字段 屬性 建構函式 析構函式

2022-01-22 21:13:09 字數 3922 閱讀 9719

物件導向的基本概念:

(1)物件

物件是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作物件,它不僅能表示具體的事物,還能表示抽象的規則、計畫或事件。

(2)物件的狀態和行為

物件具有狀態,乙個物件用資料值來描述它的狀態。

物件還有操作,用於改變物件的狀態,物件及其操作就是物件的行為。

物件實現了資料和操作的結合,使資料和操作封裝於物件的統一體中

(3)

具有相同或相似性質的物件的抽象就是類。因此,物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件。

類具有屬性,它是物件的狀態的抽象,用資料結構來描述類的屬性。

類具有操作,它是物件的行為的抽象,用操作名和實現該操作的方法來描述。

(4)類的結構

在客觀世界中有若干類,這些類之間有一定的結構關係。通常有兩種主要的結構關係,即一般--具體結構關係,整體--部分結構關係。

①一般——具體結構稱為分類結構,也可以說是「或」關係,或者是「is a」關係。

②整體——部分結構稱為組裝結構,它們之間的關係是一種「與」關係,或者是「has a」關係。

ood ( object-oriented design ):物件導向設計

ooa ( object-oriented analysis ):物件導向分析

oop( object oriented programming ):物件導向程式設計

類的九大成員:

字段( field )

屬性( property )

方法( method )

建構函式( constructor )

析構函式( destructor )

索引器( indexer )

事件( event )

運算子( operator )

巢狀類(nested class )

五種訪問修飾符:

private:僅在類的內部訪問

public:沒有訪問限制

internal:在同乙個程式集內訪問

protected:類和其派生類的內部訪問

protectedinternal:類和其派生類的內部或者同乙個程式集內訪問

字段:物件具有狀態,這個狀態是通過資料值來描述的

說的直白點就是乙個物件有用來描述它的文字,欄位就起到這個作用。比如:人這個物件,有性別、名字…用來對其進行具體的描述。

字段原則上是是私有的。為什麼呢?因為每個物件所對應的資料值並不是一樣的,為了更好的說明是那個物件就定義成私有的了。這裡提到私有這個詞就要注意上面的訪問修飾符了。所以原則上定義欄位用的訪問修飾符就是:private

屬性:上面的字段已經是私有的了,那麼在別的類中要訪問物件中的字段怎麼辦呢?如果沒有屬性如果想訪問的話就必須每個欄位要寫乙個相應的方法。在沒有屬性語法的語言裡通常的作法是使用物件方法來訪問屬性。或者理解為:屬性是對私有欄位的乙個簡單包裝,使用屬性而不是直接公開私有欄位的乙個好處就是在屬性的獲 取訪問器或設定訪問器裡加入額外的邏輯並不會為客戶端**帶來麻煩。

//字段

privatestring name;

//屬性作用一:讀寫設定

//注釋:get訪問器,讀操作;set訪問器,寫操作

public string name

getset

//字段

private int age;

//屬性作用二:驗證輸入資料的合法性和正確性

public int age

getset

//age= value;

if(value >= 0 && value <= 150)

age= value;

else throw new exception("年齡輸入不正確!");

屬性作用三:隱藏細節

建構函式和析構函式:

class test_gaozaohanshu

//首先要明白建構函式和析構函式是什麼?

//建構函式和析構函式分別管理物件的建立和釋放,負責物件的誕生和死亡的過程。當乙個物件誕生時,建構函式負責建立並初始化物件的內部環境,包括分配記憶體、建立內部物件和開啟相關的外部資源,等等。而當物件死亡時,析構函式負責關閉資源、釋放內部的物件和已分配的記憶體。

//建構函式

//建構函式是類中的一種特殊方法

//它的特殊性主要體現在如下幾方面:

//建構函式的方法名和類名相同;

//建構函式沒有返回型別;

//建構函式的主要作用是完成對類物件的初始化工作;        

//在建立乙個類的新物件時,系統會自動呼叫該的建構函式初始化新物件;

//注意:非必要我們可以不向乙個類提供建構函式,編譯器會在後台建立乙個預設的建構函式。但如果提供了自定義的建構函式,編譯器就不會提供預設的建構函式。

//下面這個是系統預設的建構函式,也是最簡單的建構函式

public test_gaozaohanshu()

//有引數的建構函式

public test_gaozaohanshu(string str_test)

console.writeline(str_test);

//在例項化的時候就賦值給str_test在程式執行的時候就會將你輸入的內容寫在控制台應用程式上面

//建構函式的過載

//上面的兩個建構函式已經形成了建構函式的過載

//過載

//函式名稱相同

//在乙個類中

//引數類表不同(包括引數的個數,資料型別)

//建構函式的訪問修飾符

//public外,可以設定建構函式的修飾符為private及protected,若設定為private,則該類不能用這個建構函式來例項化;若設定為protected,則該類只能在派生類中用該建構函式例項化

//在建構函式中呼叫在這個類中的其他建構函式

public class usermodel

private string _userid;

private string _username;

public usermodel(string userid)//帶乙個引數的建構函式

_userid = userid;

public usermodel(string userid, string username)//帶兩個引數的建構函式

: this(userid)

_username = username;

//面的**中帶有兩個引數的建構函式後新增了: this(userid)**,這樣就實現了呼叫帶有乙個引數的建構函式的方法。

//這種方法叫建構函式的初始化器,:this表示呼叫本類的建構函式,userid為引數,這樣編譯器就會呼叫那個和這個引數最匹配的建構函式。

//那這兩個建構函式的執行順序是怎樣的?若按上面的**,則是先執行有乙個引數的建構函式,然後再執行有兩個引數的建構函式。

//呼叫基類中的建構函式

public class user

private string _userid;

public user(string userid)

_userid = userid;

public class adminuser : user

private string _username;

public adminuser(string userid, string username)

: base(userid)

_username = username;

//方法和呼叫本類內建構函式的方法基本相同,只是將this換成了base。需要注意的是,子類必須有訪問基類相應建構函式的許可權,即基類的建構函式設定了合適的修飾符

類和物件 構造析構函式

a.類和物件 1.關鍵字class表明正宣告乙個類,類中資料成員 屬性 和資料功能 行為 經過封裝,使得使用者通過外部介面訪問。2.類的封裝隱藏了實現細節,同時也保證了資料的安全性。3.只要類的外部介面不變,內部實現細節再怎麼修改,使用類庫的程式也不用修改。4.物件是類型別的變數。5.內聯成員函式 ...

C 物件導向(二) 構造 析構函式

析構函式 destructor 構造 析構順序 建構函式 也叫構造器 在物件建立的時候回自動呼叫,一般用於完成物件的初始化工作 函式名與類同名,無返回值,可以有引數,可以過載,可以有多個建構函式 struct person person int age intmain 一旦自定義了建構函式,必須用其...

python物件導向與構造構析函式

程式設計正規化 程式設計范型 程式設計正規化或程式設計法 範即模範 典範之意,正規化即模式 方法 是一類典型的程式設計風格,是指從事軟體工程的一類典型的風格 可以對照方法學 如 函式式程式設計 程式程式設計 物件導向程式設計 命令式程式設計等等為不同的程式設計范型。面向過程程式設計 面向過程 pro...