一:面向對象的三大特征
封裝,繼承,多態
封裝
1:封裝的概念及作用
*通過使用PRivate和public修飾符來修飾類的成員(字段,屬性,方法等)這樣有效的使私有數據和方法不被外界訪問,這種使用特性就是封裝;
*一個屬性,一個方法也是封裝,類是對屬性和方法的封裝;
*封裝是面向對象中的一個重要特征,面向對象的三個重要特征為:封裝,繼承,多態;
*作用<模塊化和數據隱藏>
2:類是模版,確定的對象將會擁有的特征(屬性)和行為(方法);任何對象將會屬于一個類中;
3:對象是以類為模版而創建的,是類的實例化,具體化;
4:面向對象的好處
*封裝使得開發人員更加關注自己的需求;
*一個類定義之后可以多次使用,避免重復賦值;
5:類試圖 對于類的總體結構的展示;類(右鍵-----查看類圖)
6:類的祖先(object)
*Object類是所有類的父類(祖先類),因此任何一個類都可以轉換成object類型;
*可以將任何類型的值賦予object類型的變量;
裝箱:將值類型的變量轉換為<object>對象的過程叫做裝箱;
拆箱:將<object>對象類型的變量轉換為值類型的過程叫做拆箱;
繼承
*一個類繼承另一個類,第一個類叫做子類,另一個叫做父類,子類繼承父類,即子類就擁有了父類的屬性和方法,可以重寫<override>父類的方法和屬性,同時子類也可以編輯自己的屬性和方法。<Object類>
*子類不能繼承父類的私有成員
*子類只能有一個父類,但是作為父類的類可以是多個子類的父類。
1:關鍵字Virtual
Virtual關鍵字用于指定屬性或方法在派生類中重寫. 默認情況下,派生類從其基類繼承屬性和方法,如果繼承的屬性或方法需要在派生類中有不同的行為,則可以重寫它,即可以在派生類中定義該屬性或方法的新實現,這時在基類中該屬性或方法必須用virtual關鍵字修飾.virtual關鍵字用于指定屬性或方法時可以在派生類中重寫.具有virtual關鍵字的方法或屬性被稱作虛擬成員.
在基類(父類)中用virtual修飾符聲明一個虛方法,然后在在派生類(子類)中用override修飾符覆蓋基類虛方法。表明是對基類的虛方法重載。這種優勢在于它可以在程序運行時再決定調用哪一個方法,這就是所謂的“運行時多態”,或者稱動態綁定。
class A { public virtual void F(){} } class B:A { public override void F(){} }
多態 <編譯時多態,運行時多態>
*和重載的定義一樣,可以這樣說重載也多態的一種。
*定義類的繼承發生在多個類之間,而類的多態發生在同一個類上,在一個類中可以定義多個同名方法,只要確定了它們的參數個數和類型不同。
理解下面這段話就了解了多態.
覆蓋: 就是子類有和父類重名的方法和屬性,此時父類的方法就被子類的覆蓋掉了。相當于修改父類的方法。
二:對象數據類型與對象銷毀
1:基本數據類型{int,double,bool.....},值類型;
引用數據類型{數組,對象,string},對象類型;
2: *引用類型變量傳遞時,將自己的內存地址賦給新變量{指針};
*值類型變量傳遞時,將自己復制一份;
這里值類型保存在棧里面,而引用類型,一部分保存在堆里面,一部分保存在棧里面.
3:ref關鍵字
可以將值類型變量按照引用方式傳遞;{實際開發中不建議經常使用ref關鍵字}
引用傳參,必須進行初始化,
4:out關鍵字
可以讓方法有多個返回值,側重輸出,引用傳參,可以不進行初始化,但是必須在方法里面進行賦值。<return多個返回值的方法里面>
5: Params:當需要多個參數時,才會用到。數組類型參數。
6:對象的銷毀
垃圾回收機制(GC)
*.net虛擬機特有的機制,自動運行,并檢查對象的狀態;
*發現對象不被引用時,會將其釋放所占空間;
*在實際的應用中我們可以自己調用GC來幫助我們清理一些我們不需要的變量和字段。
三:非泛型集合
1:ArrayList是一個長度可變的“數組”,通常成為集合,類似于數組的結構,其中最大的特點是:可以自由的擴展元素個數;
2:ArrayList集合的特點
*元素都被轉換成object類型
*使用Add方法可以隨意添加元素,無個數限制;
*使用Remove方法可以刪除指定元素,元素刪除后索引自動調整;
*通過索引訪問元素,元素取出的時候需要強制轉換成特定數據類型;
3:Arraylist的具體插入,刪除代碼;
4:ICollection<T>泛型的知識
* IList<T>繼承自ICollection<T>,ICollection<T>繼承自IEnumerable<T>,IEnumerable<T>繼承自IEnumerable
所以List<T>實現了IList<T>接口,也就是實現了IEnumerable接口
* IEnumerable<T>是IEnumerable接口的泛型版本。使用泛型,不會強行對值類型進行裝箱和拆箱,或引用類型進行向下強制類型轉換,使程序性能提高。泛型定義的變量有類型限制,所以泛型提高了程序的類型安全。 泛型還提高了代碼的重用性。
四:泛型集合list<T>與Dictionary的使用
1:List<T>使用前的準備工作
*引入命名空間:System.Collections.Generic
*確定存儲類型:List<Student> student=new List<student>();
常用方法
*添加元素:Add(<T>);
*刪除元素:RemoveAt(索引);
*元素個數:count
遍歷集合
Foreach(Student stu in students) { Console.writeline(stu.studentName); }
2:泛型集合的最大特征:嚴格約束集合內的元素類型;
3:集合初始化器
創建集合對象時直接初始化,非常類似與數組;
4:Dictionary<k,v>通常稱為字典
*<k,v>約束集合中的元素類型
*編譯時檢查類型約束;
*無需裝箱拆箱操作
*與哈希表操作類視
新聞熱點
疑難解答