大話設計模式學習筆記——面向對象基礎

前言

  好記性不如爛「筆頭」系列——大話設計模式學習筆記編程

  目錄設計模式

  • 面向對象基礎

面向對象基礎

什麼是類與實例安全

  一切事物皆爲對象,即全部的東西老師對象,對象就是能夠看到、感受到、聽到、觸摸到、嚐到、或聞到的東西。準確地說,對象是一個自包含的實體,用一組可識別的特性和行爲來標識。面向對象編程,英文叫 Object-Oriented Programming,其實就是針對對象來進行編程的意思。類就是具備相同屬性和功能的對象的抽象集合。實例就是一個真實的對象。好比咱們屬於‘人’類,而我的就是‘人’類的實例了。而實例化就是建立對象的過程,使用new 關鍵字來建立。函數

什麼是構造方法性能

  構造方法,又叫構造函數,其實就是對類進行初始化。構造方法分爲實例構造方法和類構造方法,實例構造方法爲建立實例對象時調用,類構造方法爲建立類對象時調用。學習

什麼是方法重載設計

  方法重載提供了建立同名的多個方法的能力,但這些方法須要使用不一樣的參數類型或參數個數不一樣。方法重載可在不改變原方法的基礎上,新增功能。對象

什麼是屬性繼承

  屬性是一個方法或一對方法,但在調用它的代碼來看,它是一個字段,即屬性適合於以字段的方式使用方法調用的場合。而字段是存儲類要知足其設計所須要的數據,字段是與類相關的變量。屬性有兩個方法get 和set。get 訪問器返回與聲明的屬性相同的數據類型,表示的意思是調用時能夠獲得內部字段的值或引用;set 訪問器沒有顯示設置參數,但它有一個隱式參數,用關鍵字value 表示,它的做用是調用屬性時能夠給內部的字段或引用賦值。索引

什麼是封裝

  封裝是面向對象的三大特性之一。每一個對象都包含它能進行操做所須要的全部信息,這個特性稱爲封裝,所以對象沒必要依賴其餘對象來完成本身的操做。這樣方法和包裝在類中,經過類的實例來實現。封裝有如下好處:

  • 良好的封裝可以減小耦合;
  • 類內部的實現能夠自由地修改;
  • 類具備清晰的對外接口;

什麼是繼承

  繼承是面向對象的三大特性之一。對象的繼承表明了一種‘is-a’的關係,若是兩個對象A 和B ,能夠描述爲‘B 是A’,則代表B 能夠繼承A 。‘貓是哺乳動物’,就說明了貓與哺乳動物之間是繼承與被繼承的關係。實際上,繼承者還能夠理解爲是對被繼承者的特殊化,由於它除了具有被繼承都的特性外,還具有本身獨有的個性。若是子類繼承於父類:

  • 子類擁有父類非private 的屬性和功能(子類從它的父類中繼承的成員有方法、域、屬性、事件、索引指示器);
  • 子類具備本身的屬性和功能;
  • 子類還能夠以本身的方式實現父類的功能(方法重寫);

  繼承是有缺點的,那就是父類變,則子類不得不變。繼承會破壞包裝,父類實現細節暴露給子類,這實際上是增大了兩個類之間的耦合性。繼承是一種類與類之間強耦合性的關係。

什麼是多態

  多態是面向對象的三大特性之一。多態表示不一樣的對象能夠執行相同的動做,但要經過它們本身的實現代碼來執行。多態的幾點特性:

  • 子類以父類的身份出現;
  • 子類在工做時以本身的方式來實現;
  • 子類以父類的身份出現時,子類特有的屬性和方法不可使用;

  多態的對象的聲明必須是父類,而不是子類,實例化的對象是子類,這才能實現多態。多態的原理是當方法被調用時,不管對象是否被轉換爲其父類,都只有貪玩對象繼承鏈最末端的方法實現會被調用。也就是說,虛方法是按照其運行時類型而非編譯時類型進行動態編寫調用的。

什麼是重構

  重構就是從新構造父類,父類抽象出更多的子類中公共的東西。

什麼是抽象類

  C# 容許把類和方法聲明爲abstract,即抽象類和抽象方法。抽象對象時要注意如下幾點:

  • 抽象類不能實例化;
  • 抽象方法是必須被子類重寫的方法;
  • 若是類中包含抽象方法,那麼類必須定義爲抽象類,不管是否還包含其它通常方法;

應該讓抽象類擁有儘量多的共同代碼,擁有儘量少的數據。抽象類一般表明一個抽象概念,它提供一個繼承的出發點,當設計一個新的抽象類時,必定是用來繼承的,在一個以繼承關係造成的等級結構裏裏面,樹葉節點應當是具體類,而樹枝節點均應當是抽象類。

什麼是接口

  接口是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦類實現了接口,類就能夠支持接口把指定的全部屬性和成員。聲明接口在語法上與聲明抽象類徹底相同,但不容許提供接口中任何成員的執行方式。全部接口不能實例化,不能有構造方法和字段;不能有修飾符;不能聲明虛擬的或靜態的等。實現接口的類必需要實現接口中全部方法和屬性。

  抽象類與接口的區別:

  從表象上來講:

  • 抽象類能夠給出一些成員的實現,接口卻不包含成員的實現;
  • 抽象類的抽象成員可被子類部分實現,接口的成員須要實現類徹底實現;
  • 一個類只能繼承一個抽象類,但能夠實現多個接口等;

  從實質上來講:

  • 類是對對象的抽象;抽象類是類的抽象;
  • 若是行爲跨越不一樣類的對象,可以使用接口對於一些類似的類對象,用繼承抽象類;
  • 從設計角度講,抽象類是從子類中發現了公共的東西,泛化出父類,而後子類繼承父類,而接口是根本不知道子類的存在,方法如何實現還不確認,預先定義;

什麼是集合

  .NET Framework 提供了用於數據存儲和檢索的專用類,這些類統稱集合。這些類提供對堆棧、隊列、列表和哈希表的支持。大多數集合類實現相同的接口。

什麼是泛型

  泛型是具備佔位符(類型參數)的類、結構、接口和方法,這些佔位符是類、結構、接口和方法所存儲或使用的一個或多個類型的佔位符。泛型集合類能夠將類型參數用途它所存儲的對象的類型的佔位符;類型參數做爲其字段的類型和其方法的參數類型出現。一般狀況下,都使用泛型集合,由於這樣能夠得到類型安全的直接優勢而不是從基集合類型派生並實現類型特定的成員。此外,若是集合元素爲值類型,泛型集合類型的性能一般優於對應的非泛型集合類型(並優於從非泛型基集合類型派生的類型),由於使用泛型時沒必要對元素進行裝箱。

什麼是委託和事件

  委託是對函數的封裝,能夠看成給方法的特徵指定一個名稱。而事件則是委託的一種特殊形式,當發生有意義的事件時,事件對象通知過程。

  委託是一種引用方法的類型。一旦爲委託分配了方法,委託將與該方法具備徹底相同的行爲。而事件是說在發生其餘類或對象關注的事件時,類或對象可經過事件通知它們。

相關文章
相關標籤/搜索