1.類中包含:字段;屬性和方法。
2.面向對象意在:寫出通用的代碼,屏蔽差異
對象必須是看得見,摸得着的具體物體。--沒有具體,則不能成為對象
萬物皆對象
我們把具有相同屬性和相同方法的對象抽象為類。
對象是根據類創建出來的
實例類是不占內存的,對象要占內存
3.屬性的作用就是保護字段,對字段的賦值和取值進行限定。
4.屬性的本質:及兩個方法:即get,set。既有 get,又有set,稱為可讀可寫屬性。有的時候只有get或set。
5.當創建好類的對象后,需要給這個對象的每個屬性進行賦值, 稱為對象初始化。
6.靜態和非靜態的區別:實例類不占內存,實例化對象時才會在堆上分配內存。
靜態類在整個項目中實現資源共享,靜態類本身就在靜態存儲空降占據一塊內存。
1)在非靜態類中,即可以有靜態成員,也可以有非靜態成員(實例成員)。
2)調用非靜態成員,對象.實例成員名。
3)在調用靜態成員的時候,類名.靜態成員名。
總結:靜態成員必須使用類名去調用,非靜態成員使用對象名去調用。
1)靜態方法中只能使用靜態成員,不能使用實例成員。
2)實例方法中既可以使用靜態成員,也可以使用非靜態成員。
3)靜態類中只能有靜態成員,不能有非靜態成員
4)靜態類不能實例化對象。因為靜態類只能包含靜態成員,而靜態成員只能用類名調用,不能使用對象名調用,故不需要實例化靜態類,也不能將靜態類對象實例化。
7.靜態類和實例類的使用
1)如果你想要你 的類當做一個“工具類”去使用,這個時候可以考慮將類寫成靜態類。
2)實例類不占內存,實例化對象時才會在堆上分配內存。
3)靜態類在整個項目中實現資源共享,靜態類本身就在靜態存儲空間占據一塊內存。(堆,棧,靜態存儲空間)
4)只有應用程序全部結束之后,靜態類才釋放資源。
8.構造函數
通過構造函數給類的對象屬性初始化,通過類屬性給類中的字段初始化。
作用:幫助我們初始化對象(給對象的每個屬性一次賦值)
1)構造函數沒有返回值,連void也不能寫
2)構造函數名和類名必須一樣。
3)構造函數的訪問修飾符必須是public,否則不能調到構造函數進行初始化。
4)創建對象的時候,會自動的調用構造函數。
**5)類中會有一個默認的無參數的構造函數,若在定義構造函數(無論是否有參數),則創建對象是,默認的無參的構造函數都不能被調用。
9.new關鍵字的作用
person zsPerson = new person();
1)在內存中開辟一塊空間
2)在開辟的空間中創建對象
3)調用對象的構造函數進行初始化對象。
:base()關鍵字是在父類中申明了有參數構造函數,創建子類對象時,不能調用父類中默認無參構造函數,故需要在子類構造函數中使用:base()顯示調用父類中的有參構造函數,進行初始化。
10.this關鍵字
作用:
1)代表當前對象
2)在同一個類中顯示的調用構造函數 :this()
主要是作用與同一個類中,一個構造函數顯示調用另一個構造函數。
public Student(string name, char gender, int age, int chinese, int match, int english)
{
Name = name;
Gender = gender;
Age = age;
Chinese = chinese;
Match = match;
English = english;
}
//在下面這個構造函數中調用上面這個構造函數實現對象實例化public Student(string name , int chinese ,int match , int english):this(name ,'女' ,12 ,chinese ,match ,english)
{
}
11.析構函數在程序執行結束的時候,調用析構函數進行釋放內存。
6.靜態和非靜態的區別:實例類不占內存,實例化對象時才會在堆上分配內存。
靜態類在整個項目中實現資源共享,靜態類本身就在靜態存儲空降占據一塊內存。
1)在非靜態類中,即可以有靜態成員,也可以有非靜態成員(實例成員)。
2)調用非靜態成員,對象.實例成員名。
3)在調用靜態成員的時候,類名.靜態成員名。
總結:靜態成員必須使用類名去調用,非靜態成員使用對象名去調用。
1)靜態方法中只能使用靜態成員,不能使用實例成員。
2)實例方法中既可以使用靜態成員,也可以使用非靜態成員。
3)靜態類中只能有靜態成員,不能有非靜態成員
4)靜態類不能實例化對象。因為靜態類只能包含靜態成員,而靜態成員只能用類名調用,不能使用對象名調用,故不需要實例化靜態類,也不能將靜態類對象實例化。
7.靜態類和實例類的使用
1)如果你想要你 的類當做一個“工具類”去使用,這個時候可以考慮將類寫成靜態類。
2)實例類不占內存,實例化對象時才會在堆上分配內存。
3)靜態類在整個項目中實現資源共享,靜態類本身就在靜態存儲空降占據一塊內存。(堆,棧,靜態存儲空間)
4)只有應用程序全部結束之后,靜態類才釋放資源。
8.構造函數
通過構造函數給類的對象屬性初始化,通過類屬性給類中的字段初始化。
作用:幫助我們初始化對象(給對象的每個屬性一次賦值)
1)構造函數沒有返回值,連void也不能寫
2)構造函數名和類名必須一樣。
3)構造函數的訪問修飾符必須是public,否則不能調到構造函數進行初始化。
4)創建對象的時候,會自動的調用構造函數。
**5)類中會有一個默認的無參數的構造函數,若在定義構造函數(無論是否有參數),則創建對象是,默認的無參的構造函數都不能被調用。
9.靜態類中只能有靜態成員,不能有非靜態成員;靜態類中的構造函數不能加訪問修飾符。靜態類中的構造函數在靜態類調用其中的成員之前,就已經初始化了,而非靜態類,則是在實例化對象的時候調用構造函數。不管靜態類調用幾次其中的成員,都只執行一次構造函數的調用。