c# 基礎複習1

來源:互聯網
上載者:User

標籤:style   color   get   使用   strong   資料   

1. 類和對象


1.1 類和對象的概念
  類:對象的類型,它不同於 int 等基礎資料型別 (Elementary Data Type),因為類具有行為;也可以說是具有相
  同特徵和行為的一組對象的集合。
  對象:對象是一個個你能看得見,摸得著的實體,是實實在在的事物,具有相同特徵和
  行為的對象可以抽象成類。
1.2 定義類的文法
  [modifier] class ClassName
  {
    //[field,Method]
  }
1.3 如何建立對象
ClassName name=new ClassName();
1.4 命名空間:
作用:用於管理類;
聲明 namespace;
匯入 using。

2. 封裝


2.1 封裝的概念
  封裝指的是將東西封裝在一起,然後以新的完整的形式呈現。對於物件導向而言,封裝
  就是將方法和欄位封裝到一個程式單元中,並且這些單元以類的形式實現。那麼我們說
  的再直白一些,封裝就是將欄位私人化,提供公有的方法來訪問私人的欄位,那麼這樣
  的一個類就是實現了封裝特性的類。
  封裝是物件導向編程的重要概念之一。通過封裝可以隱藏類的實現細節,同時,可以通
  過訪問相對公開的屬性和方法與外界進行資訊的交流。
2.2 屬性文法
存取修飾詞 類型 屬性名稱
{
屬性訪問器(包含 set 和 get)

}
set 訪問器負責設定欄位的值
get 訪問器負責擷取欄位的值

2.3 建構函式
與類名相同;
沒有傳回型別,無需標識 void;
可以無參數也可以有參數;
作用:主要完成對象的初始化工作。
2.4 方法重載
1、重載方法同名且在同一個類中。
2、重載方法的參數的類型或個數不同。

3. 繼承:
3.1 繼承的概念
物件導向三大特性之一,繼承是兩個類之間的關係:子類繼承了父類,就天然擁有了
父類所具有的特性(建構函式、靜態成員、私人成員除外)。
3.2 繼承的價值
繼承,既實現了代碼的重用,又類比了現實世界的關係,在物件導向編程中,強調一
切皆對象,繼承正好類比了對象間的關係。而且,繼承使得父類與子類的階層清
晰,子類只需用關注自己的狀態和行為,父類的狀態和行為則交給父類去處理。
3.3 繼承的文法
在聲明子類的時候,在類名右邊加上冒號,冒號右邊寫上父類的類名。
3.4 繼承的特性
1、單根性 2、傳遞性。
3.5 繼承與建構函式
子類的建構函式被調用時,會首先調用父類的建構函式。
3.6 base 用法
1、使用 base()調用父類建構函式。
2、使用 base 調用父類成員。

3.7 裡氏替換原則
簡單的解釋,就是子類對象可以替換父類對象。
關鍵字is和as:使用is判斷物件類型,用as進行類型轉換。

4. 多態
4.1 多態概念
多態是類的三大特性之一。封裝、繼承、多態這三大特性是相互關聯的。多態性存在
於繼承性之中,它是繼承性的進一步擴充。沒有繼承就沒有多態。通過多態可以實現
代碼重用,減少代碼量,提高代碼的可擴充性和可維護性。在繼承的基礎上實現方法
重寫是實現多態性的關鍵。
4.2 多態的使用
同一個參考型別,使用不同的執行個體而執行不同操作。
1、使用父類作為方法形參。
2、使用父類作為方法傳回值類型。
4.3 虛方法:使用 virtual 修飾符修飾的方法 。
4.4 重寫方法:使用 override 修飾符修飾的方法 。
4.5 方法重寫的要求
1、相同的方法名。
2、相同的參數列表。
3、傳回值類型必須相同或者是子類。
4 、不能縮小被重寫方法的存取權限。
4.6 隱藏方法和重寫方法的區別:
(1)關鍵字分別為 new 和 override。
(2)隱藏保留了基類方法,重寫覆蓋了基類方法。
(3)基於重寫可以實現多態,而隱藏方法不行。
4.7 向上轉型文法:
<父類型> <引用變數名> = new <子類型>();
向下轉型文法:
<子類型> <引用變數名> = (<子類型> )<父類型的引用變數>;

5. 抽象類別和介面
5.1 抽象類別和抽象方法的定義
public abstract class 類名
{
public abstract void 方法名([參數列表]);
}
5.2 抽象方法和虛方法的區別
(1)關鍵字分別為 abstract 和 virtual。
(2)抽象方法必須在抽象類別中,虛方法可在普通類中,也可以在抽象類別中。
(3)抽象方法只有方法聲明,不能有實現;虛方法有實現。
(4)繼承抽象類別的非抽象類別必須重寫抽象方法;而虛方法可以不重寫。
5.3 定義介面的文法
public interface 介面名稱
{
//介面成員(方法、屬性等)
}
關於介面的文法,需要大家注意以下幾點:
1)介面的名稱通常以“I”開頭,後面的部分和類的命名規則一樣,即 Pascal 命名
法則。
2)介面中的方法不指定具體實現,即也是抽象的,比如這裡的 ShowName()方法,
但與抽象類別中的抽象方法不同,它不能用 abstract 關鍵字修飾。
3)介面成員隱式 public,不能顯示指定存取層級,比如 ShowName()方法是公有的,
但不能顯示指定為 public。
5.4 抽象類別介面的好處
1.抽象類別便於複用。
2.介面便於代碼維護。
5.5 物件導向設計原則
1.多用組合,少用繼承。
2.針對介面編程。
3.針對擴充開放,針對改變關閉。


6. 靜態和密封
6.1 靜態成員
類的靜態成員包括靜態方法、欄位和屬性。
靜態成員用“static”關鍵字聲明。
用“類名.成員名”的方式調用。
6.2 靜態方法
靜態方法只能夠訪問本類中的靜態成員,不能夠直接存取本類中的執行個體成員。
6.3 執行個體方法
執行個體方法既可以訪問執行個體成員,又可以訪問靜態成員。
6.4 靜態欄位的用法
1.記錄已執行個體化的對象的個數。
2.儲存必須在所有執行個體之間共用的值。
6.5 靜態類
1.只包含靜態成員。
2.不能執行個體化對象。
3.不能派生子類。
6.6 密封類
sealed class 不能派生子類,但可以執行個體化對象。
6.7 密封方法
用 sealed 關鍵字修飾重寫的方法,該方法將不能被子類重寫。


7. 實值型別和參考型別
7.1 實值型別和參考型別
實值型別一般儲存在棧中,參考型別一般儲存在堆中。
實值型別直接儲存值,參考型別直接儲存物件的地址或引用。
7.2 定義結構的文法
存取修飾詞 struct 結構名
{

結構成員
}
7.3 定義枚舉的文法
存取修飾詞 enum 枚舉名
{
成員 1,成員 2,……成員 n
}
7.4 ref 和 out 的區別
ref 對應的變數必須有初始值,out 可以沒有。


7.5 常量
不可修改,必須有初始值,必須定義在類中,關鍵字 const。
7.5 裝箱和拆箱
裝箱:將實值型別轉成參考型別。
拆箱:將參考型別轉成實值型別。


7.6 Object 和 ValueType
直接繼承 Object 是參考型別,繼承 ValueType 是實值型別

 

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.