TODO: 單例模式,只能創建一個物件(對象)
1.註解
//、/**/、///
- 單行註解:
//註解單行代碼 - 多行註解:
/* 要註解的內容 */ - 文檔註解:
///註解類別和方法 - HTML:
- CSS:/* 要註解的內容 */
2.命名規範
- Camel駱駝命名:變數/變量、Field(欄位/字段) 要求首單詞的或字母小寫,其餘單詞首字母大寫,變數/變量、欄位/字段
int age、string name、char gender、string highSchoolint _chiness
- Pascal帕斯卡命名:類別、方法、屬性名 類別、方法、屬性名
GetMax、GetSum定義的變量或方法,名字要有意義- 方法名:動詞
Write()、Open()、Close()、Dispose()、GetUserId()…方法都是要做一件事情 - 變量名:按功能命名、按方法的返回值內容命名
userName = GetUserName();
3.物件導向(面向對象)複習
1、封裝、繼承、多型(多態)
- Field(欄位/字段):儲存數據,訪問修飾符應該設置為private私有的。
屬性:保護Field(欄位/字段),對Field的取值和賦值進行限定。
new關鍵字:- 在heap(堆積/堆)當中開闢空間
- 在開闢的空間中創建物件(對象)
- 調用物件(對象)構造函數
構造函數的作用是什麼? 初始化物件(對象),當創建物件(對象)的時候,會調用構造函數
- 對Field(欄位/字段)的保護方法:
- get()
- set()
- 構造函數
- return
- 立即結束本次方法(立即離開方法)
- 在方法中返回要返回的值
return age = 0;
4.繼承複習
解決代碼的冗餘,實現多形(多態),增加了代碼的擴展素,便於維護。
繼承有兩個很重要的特性:
- 單根性
- 傳遞性
- 子類並沒有繼承父類的構造函數,而是會默認調用父類的那個無參數的構造函數。
- 如果一個子類繼承了一個父類,那麼這個子類除了可以使用自己的成員外,還可以使用從父類那邊繼承過來的成員。但是父類永都只能使用自己的成員,而不能使用子類的成員。子類之間也不能互相使用對方的成員。
5.里氏轉換(LSP)
- 子類可以賦值給父類
- 如果父類中裝的是子類對象(物件),那麼可以將個父類轉換為子類對象(物件)
用as、is兩個關鍵字做轉換 as:轉換成功返回對應的對象(物件),轉換失敗返回nullis:is會用在判斷,轉換成功回傳true,失敗回傳false
6.多態(多型)
實現多態(多型)的三個方法
- 虛方法
virtual - 抽象類
abstract - 接口(介面)
interface
Q:什麼時候用虛方法virtual?
如果這個父類有意義,能夠創建對象(物件),並且這個方法可以調用的話,可以寫成虛方法。
Q:什麼時候用抽象類abstract?
如果說父類不知道如何實現,方法也不知道怎麼寫,可以用抽象類