對於面向對象的知識我只是了解,但是要將其很完整的應用到項目裡面還不行。
1:就是在程序中通過代碼來模擬世界中的物品,屬性
就是對象具有的各種特征(唯一的)。對象就是一個真實特定的物品。
2:屬性-----特征 方法----行為
類是對象共性的體現,類是模版,確定對象將會擁有的特征(屬性)和行為(方法);對象的共有屬性的體現;
3:類是對象的類型,用類可以聲明對象,則對象就會具有該類的屬性和方法;類是概念而對象是個實物;【將類的概念和結構體進行比較,這樣就很好理解】
4:類的實例化就是用類來聲明對象,類不占內存,而對象占內存空間;
5:定義類的語句(類文件以“.cs”結尾)
(訪問修飾符)class 類名
{
類的語句成員;
}
*一個類定義在一個.cs文件裡面,不要在一個.cs文件中定義多個類。
*類的命名首字母大寫;
6:通過類來產生對象就做類實例化
類名 對象=new 類名();
類名 zeSan=new 類名();
則此對象(zeSan)就具有此類的所以的屬性和行為。
7:通過“實例名.屬性”來進行賦值,而“實例名.方法”來調用顯示;
//////////////////////////
1:有關方法加static的說法【重點】
*加static,此方法在main中可以通過“類.方法名”完成調用(“類名.屬性或類名.方法”);
*不加static,此方法在main中必須先實例化之後,才能完成調用(“實例名.方法或實例名.屬性”);
*這個在內存分配中也有不同;
2:用類進行實例化,他們分別存在不同內存空間裡面,這樣不管你修改那一個,別的都不會收到影響;
3:
訪問修飾符:有4種訪問修飾符
*public:可以在任何地方被訪問;
*private:只可以在本類中進行訪問;(系統默認值)
*preotected:只能在本類和子類中被訪問;
*intemal:只能在本項目中被訪問;
4:對變量的賦值,可以將字段寫為方法來用其進行賦值,外部在進行訪問,調用;
5:屬性就是定義的public變量中含有get,set的兩個方法;
賦值用set方法;取值用get方法;
用戶可以在set方法中進行判斷,看是否是要求的輸入值。
屬性就是用來保護私有字段的合法性;
6:只讀屬性,將set方法刪去,只留get方法,則這個屬性只能讀取,不能寫入;
///////////////////////////////
1:當初始化一個類時,若沒對其賦值,則系統自動初始化;
String初始化為NULL;
Char初始化為:\0;
2:構造方法的好處
*不需要對多個屬性賦值時,不需要重復的寫實例名;
*保證用戶在new時必須對其進行賦值
*在創建對象時,對只讀屬性進行初始化
3:定義好類之後,系統就自動定義了一個構造方法,只是我們看不到而已;
4:構造方法
*特點:無返回值,方法名和類名相同;
通過參數來傳值,對於一些只讀的“名字”“ID”“身份證”等等,都可以通過構造方法來定義來使用它;
//////////////
構造方法是一種特殊的成員方法,它的特殊性反映在如下幾個方面:
1.構造方法作用:
(1).構造出來一個類的實例 (2).對構造出來個一個類的實例(對象)初始化。
2.構造方法的名字必須與定義他的類名完全相同,沒有返回類型,甚至連void也沒有。
3.主要完成對象的初始化工作,構造方法的調用是在創建一個對象時使用new操作進行的。
4.類中必定有構造方法,若不寫,系統自動添加無參構造方法。接口不允許被實例化,所以接口中沒有構造方法。
5.不能被static、final、synchronized、abstract和native修飾。
6.構造方法在初始化對象時自動執行,一般不能顯式地直接調用.當同一個類存在多個構造方法時,java編譯系統會自動按照初始化時最後面括號的參數個數以及參數類型來自動一一對應。完成構造函數的調用。
7.構造方法分為兩種:無參構造方法 有參構造方法
構造方法可以被重載。沒有參數的構造方法稱為默認構造方法,與一般的方法一樣,構造方法可以進行任何活動,但是經常將他設計為進行各種初始化活動,比如初始化對象的屬性。
8.構造代碼塊:
(1)作用:給對象進行初始化,對象一建立就執行,而且優先於構造函數執行
(2)構造代碼塊和構造函數的區別:
構造代碼塊是給所有不同對象的共性進行統一初始化,構造函數是給對應的對象進行初始化
9.子類繼承父類中,
***子類的實例化過程
***構造方法不能被子類繼承
***子類創建對象時,會先去創建父類的對象。
默認是去調用父類的無參構造方法。
***子類構造方法中,第一行默認是super()
***為什麼子類中第一行會默認有super()
因為他繼承父類的成員使用,使用前這些成員必須初始化,
而他們是父類的成員,所以,必須通過父類進行初始化。
所以,會先創建一個父類的對象。
**當父類沒有無參構造方法時
必須使用this或者super調用其他的構造方法。
10.自定義類中,如果不寫構造方法,java系統會默認添加一個無參的構造方法。如果寫了一個有參的構造方法,可以不用寫無參構造方法。
如果想使用無參的構造方法,就必須手動給出無參構造方法。
建議:一般情況下,我們自定義的類都要手動給出無參構造方法
////////
1:要實例化一個類,必須要調用它的構造方法;而且構造方法可以有多個參數;
2:構造方法可以重載,也可以有多個參數的構造方法;
3:類圖
4: 析夠函數(GC垃圾回收器收垃圾時調用的方法)
*一個類中只能有一個析構函數;
*無法繼承和重載
*無法主動調用,因為他們是自動調用的;
5:要想拋異常語法
Throw new exception(“提示異常”);
1:任何類型都可以轉到object類型;可以通過轉到定義了查看自己的變量調用了那個函數;
2:console.writeline();是函數的調用;
3:(可變數組)數組前面加params可以往數組中直接添加元素,每個元素之間用逗號相隔;
4:params 關鍵字可以指定在參數數目可變處采用參數的方法參數。在方法聲明中的 params 關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個 params 關鍵字。
************命名空間***********
1:類的文件夾:命名空間(namespace)
*主要用於解決類的重名問題;
*相當與文件夾的形式,好理解;
2:不同命名空間下的調用.訪問
*寫全稱 命名空間.類名
*先using引用命名空間,再調用;
3:類的訪問只能訪問自己命名空間下的類;不能訪問不同命名空間下的類,要訪問需要引用“using.命名空間名”
4:所有的命名空間都在system的命名空間下,命名空間下可以定義其他的命名空間;system為根命名空間;
5:命名空間可以命名為自己公司的名字,為了以後代碼的重復定義;
/////
1:c語言裡面用char數組來存儲字符串的,而在c#中用string來定義字符串,其實也是在數組中存儲的,字符串可以看成是數組; 【string是個特殊的類型】
2:字符串一旦聲明賦值,就無法對其改變,應為他是只讀的;(不可變性)
3:類的方法
如何修改string的值
String s=”hello word”;
Char[ ] chars=s.ToCharArray( );
S=new string (chars);
Console.writeline(S);
4:方法表示行為,屬性表示狀態;
*******
寫的比較亂,沒有章法.主要是想以後復習這些知識時方便.
*******