標籤:style io color ar 使用 sp 資料 on 問題
A1 10.1號,祖國生日時候,我開始痛下決心決心以後搞軟體,一副苦大仇深的樣子,想把《Head first C#》看完。期間挫折叢叢,最大的錯誤在於想把這本書快速看完,忽視了效率 ,終於快看完了,才知道沒有做筆記,理解不透徹,有的地方甚至模糊。明白:好的學習方法是最大的效率。急於求進度,往往導致,結果自己不能接受,遇到問題,不去解決,只會更加糾結。做完,在床上,入睡前,隨手撿一本書翻翻《大話設計模式》,瞬間我如癡如醉,很多模糊的概念也能理順了,花了一上午,把一些C#一些概念重新梳理下,於是這篇總結誕生了。這篇很多內容取自《大話設計模式》。
A2 類與執行個體
類:就是具有相同的屬性和功能的對象的抽象的集合。
執行個體:執行個體就是一個真實的對象,而執行個體化就是建立對象的過程,使用new關鍵字。
Cat cat = new Cat() ; 是用new,將Cat類執行個體化,建立執行個體cat。
A3 構造方法
構造方法,即建構函式。其功能就是對類進行初始化。構造方法與類同名,無需傳回值,也不需要void。
Cat cat = new Cat() ; Cat() 就是建構函式,對Cat 進行初始化。
Class Cat
{
private string name = "" ;
public Cat (string name)
{
this.name = name ;
}
}
A.4 方法重載
方法重載:提供了建立同名的多個方法的能力,但是這些方法需要使用不同的參數類型。
Class Cat
{
private string name = "" ;
public Cat (string name)
{
this.name = name ;
}
public Cat()
{
this.name = "無名";
}
}
注意的是:方法重載時,必須要方法名相同,參數類型或個數必須要有所不同。
重載可以在不改變原方法的基礎上,增加新功能。
A.5 屬性與修飾符
屬性是一個方法或一對方法,但在調用它的代碼來看,它是一個欄位,即屬性適合於以欄位的方式使用方法調用的場合。
private int shoutNum = 3 ;
public int ShoutNum
{
get {return shoutNum ;}
set {shoutNum = value ;}
}
get :get訪問器 返回與申明的屬性相同的資料類型,表示的意思是調用時可以得到內部欄位的值或引用;set; set訪問器沒有顯示設定參數,但它有一個隱式參數,用關鍵字value表示,它的作用是調用屬性時可以可以給內部的欄位或者引用賦值。
總結:變數私人的叫欄位,共有的叫屬性。
A6 封裝
傳說中物件導向三大特徵:封裝,繼承,多態;三個常用的修飾符:piblic private protected .
每個對象都包含它能夠進行操作所需要的所有資訊,因此對象不依賴其他對象來完成自己的操作,我們稱之為:封裝。
Dog dog = new Dog() ;//其中Dog()我們把它封裝了,然後就可以調用Dog()了,但是外在無法修改它。
A7 繼承
對象的繼承代表了一種 is-a 關係,如果有2對象,A和B,可以描述為B是A,則表明B可以繼承A(狗是動物,則狗可以繼承動物的一切方法屬性,private除外)。
如果子類繼承父類:(1)子類擁有父類除private的屬性和功能。(2)子類具有自己的屬性和功能,即子類可以擴充父類沒有的屬性和功能.(3)子類還可以以自己的方式實現父類的功能。
對於建構函式,它不能被繼承,只能被調用。
Class Dog : Animal
{
}
繼承的缺點:1 父類變,子類不得不變。 2 繼承會破壞封裝,父類的細節暴露給子類。
A8 多態
多態表示不同的對象可以執行相同的動作,但要通過它們自己的實現代碼來執行。
注意三點:(1)子類以父類的身份出現(2)子類在工作時以自己的方式來實現。(3)子類以父類的身份出現時,子類特有的屬性和方法不可用。
為了使子類的執行個體完全接替來自父類的成員,父類必須將該成員聲明為虛擬(virtual)。子類可以使用override關鍵字,將父類實現替為自己的實現,這就是 重寫 Override .
Class Animal
{
public virtual string Shout()
{
}
}
Class Dog : Animal
{
public override string Shout()
{
}
}
A 9 重構
理解不夠透徹,下次再寫吧。
A 10 抽象類別
c#准許把類和方法申明為abstract , 即抽象類別和抽象方法。
需注意幾點:(1)抽象類別不能執行個體化(2)抽象方法必須是被子類重寫的方法。(3)如果類中包含抽象方法,那麼類就必須定義為抽象類別,不論是否包含其他方法。
A 11 介面
實現介面的類就必須實現介面中所有的方法和屬性
一個類可以支援多個介面,多各類也可以支援相同介面。
介面用interface 進行申明,前面加上 I 。
介面與抽象3個區別:
1 類是對對象的抽象,抽象類別是對類的抽象,介面是對行為的抽象。
2 如果行為跨越不同的類,可以用介面。對於一些相似的類,用繼承抽象類別。
3 從設計角度講 ,抽象類別是從子類中發現公用的東西,泛化出父類,然後子類繼承父類,而介面是根本不知子類的存在,方法如何?還不確認,預先定義。
A 12 集合
數組優點:在記憶體中是連續的,運算速度快。
.NET Framework 提供了資料存放區和檢索的專用類,這些類型統稱集合。這些類提供對堆棧,隊列,列表,雜湊表的支援。
A 13 泛型
泛型集合首先需要 System.Collection.Generic的命名空間。
List類是ArrayList 類的泛型等效類。
A 14 事件與委託
下次寫,還不太透徹
總結:所有知識點都需要實踐,等《First Head》看完了,就看《模式設計》,多敲代碼。
關於C#--面相對象基礎總結