c 基礎,面試前迅速鞏固c 最基礎知識點

2022-02-17 18:56:13 字數 2740 閱讀 6469

n年前為了面試,蒐羅的c#基礎知識,記在了文件裡。今天寫到裡,與人分享,因為不是專家,所以僅供參考。

1.物件導向

在物件導向概念提出之前,語言都是面向過程的,說到物件導向,應該與面向過程比較,這樣理解會更清晰。顧名思義,面向過程強調的是過程,物件導向強調的是物件。

下面通過「關門」這個例子,說明兩者的的區別,以便幫助理解物件導向的概念。

面向過程做這一件的思路是:去把門關上。

小明是個乖巧聽話的學生,他輕輕的把門關上;小強比較好動,他一腳把門踹上了。因為面向過程強調的是過程,那麼不同的人去做這件事,方式可能會不一樣,如果有100個

人,可能有100中方法,在實際專案開發中,我們解決乙個問題,我們要為100個人定製100個方法,這是不能想象的。

物件導向就很好的解決了此問題,物件導向思路:門被關了

我們把「門被關了」看做是一物件,不管是小明還是小強,或者小紅,他們只要找到這個物件就完成了任務,這樣1000人過來,用的都是乙個物件,遮蔽了人的差異性,實現了**的通用性。

物件導向的三大特性:封裝,繼承,多型

2.建構函式(方法)

作用:初始化物件(給物件的每個屬性一次賦值),是一種特殊的方法

1)建構函式沒有返回值,連void也不能寫

2)建構函式名必須和類名一樣

3)建立物件時會執行建構函式

4)建構函式可以有過載

5)類中會有乙個預設的無引數建構函式,當你寫了乙個新的建構函式(有或無引數),預設的無引數建構函式就沒有了。

3.析構函式(方法)

樣式:~類名(),程式結束時才執行,幫助釋放資源。

4.值型別和引用型別

1)值型別:基本資料型別(int,bool,char,decimal等),結構,列舉

引用型別:string,類,陣列,介面,委託,集合

2)值型別傳遞方式為值傳遞,傳遞的是值本身,引用型別的傳遞方式為引用傳遞,傳遞的是這個物件的引用

3)值型別一般儲存在記憶體的棧中(根據申明的位置決定,可能會在堆中),引用型別總是儲存在記憶體的堆中

4)裝箱就是將值型別轉換為引用型別,拆箱就是將引用型別轉換為值型別。

5.訪問修飾符

1)public :公開的公共的

2)private:私有的,只能在當前類的內部訪問

3)protected:受保護的,只能在當前類的內部以及該類的子類中訪問。

4)internal:只能在當前專案中訪問。在同乙個專案中,internal和public的許可權是一樣。

6.繼承

1)子類繼承了父類的屬性和方法,但是子類並沒有繼承父類的私有成員

2)子類並沒有繼承父類的建構函式,但是,子類會預設的呼叫父類無引數的建構函式,建立父類物件,讓子類可以使用父類中的成員。所以,如果在父類中重新寫了乙個有引數的建構函式之後,那個無引數的就沒有了,子類就呼叫不到了,子類就會報錯。

3)c#是單繼承,乙個類只能繼承乙個父類,object是所有類的基類。

7.靜態類和非靜態類

記憶體中一般有三塊儲存區域,棧,堆和靜態儲存區域,靜態物件就儲存在靜態儲存區域中

1)在非靜態類中,既可以有非靜態成員,也可以有靜態成員;靜態類中只允許有靜態成員

2)類中的靜態成員屬於類,不屬於物件

3)靜態類不能被例項化

4)在呼叫非靜態成員的時候,需要使用物件名.非靜態成員;在呼叫靜態成員的時候,需要使  用類名.靜態成員名

5)如果你想要你的類當做乙個"工具類"去使用,這個時候可以考慮將類寫成靜態的,靜態類在整個專案中資源共享。

8.多型

1)實現多型的三種手段:虛方法,抽象類,介面。

2)如果父類中的方法有預設的實現,並且父類需要被例項化,這時可以考慮將父類定義成乙個普通類,用虛方法來實現多型;如果父類中的方法沒有預設實現,父類也不需要被例項化,則可以將該類定義為抽象類。

9.抽象類

1)抽象成員必須標記為abstract,並且抽象方法不能有任何實現。

2)抽象成員必須在抽象類中。

3)抽象類不能被例項化

4)子類繼承抽象類後,必須把父類中的所有抽象方法都重寫

5)抽象成員的訪問修飾符不能是private

6)在抽象類中可以包含例項成員,並且抽象類的例項成員可以不被子類實現

7)抽象類是有建構函式的。雖然不能被例項化

8)如果父類的抽象方法中有引數,那麼。繼承這個抽象父類的子類在重寫父類的方法的時候必須傳入對應的引數;如果抽象父類的抽象方法中有返回值,那麼子類在重寫這個抽象方法的時候 也必須要傳入返回值

10.介面

1)介面不能被例項化

2)只要乙個類繼承了乙個介面,這個類就必須實現這個介面中所有的方法

3)介面中的成員不能加「訪問修飾符」,預設為public,不能修改,介面中的方法不能有任何實現

4)介面中只能有方法、屬性、索引器、事件,不能有「字段」和建構函式

5)介面與介面之間可以繼承,並且可以多繼承,介面並不能去繼承乙個類,而類可以繼承介面

6)乙個類可以同時繼承乙個類並實現多個介面,如果乙個子類同時繼承了父類a,並實現了介面ia,那麼語法上a必須寫在ia的前面

7)當乙個抽象類實現介面的時候,需要子類去實現介面

C語言基礎鞏固

基本資料型別 1 基本型別 c語言基本資料型別 char,int,float,double.c語言規定可以在基本資料關鍵字前面加上以下這些修飾符 signed,unsigned,short,long.來擴充套件基本資料型別的數值範圍,或提高基本資料型別的資料精度。c語言還有乙個特殊的資料型別 voi...

C 基礎鞏固 iterator迭代器

今天覆習了一下c 迭代器,果然又有新的收穫,下面列一下我認為容易忽略的幾個點。1 迭代器和指標作用相似,獲取迭代器不需要使用取位址符,iterator可以直接表示迭代器iterator所指元素的引用。2 vector begin指向第乙個元素的迭代器,end指向尾元素的下一位置的迭代器。bool m...

C 面試基礎問題

傳入某個屬性的set方法的隱含引數的名稱是什麼?value,它的型別和屬性所聲名的型別相同。如何在c 中實現繼承?在類名後加上乙個冒號,再加上基類的名稱。c 支援多重繼承麼?不支援。可以用介面來實現。被protected修飾的屬性 方法在何處可以訪問?在繼承或間接繼承與這個類的子類中可以訪問。私有成...