每乙個類都應該寫在乙個新的類檔案裡面,不要都寫在主檔案裡。
在寫類的時候會發現,好多的類中有相同的屬性和方法,那麼就可以將這些相同的屬性和方法寫在乙個類中,而其他的類去繼承他,這樣就不需要講這些相同的**重複書寫多次了。這樣,這個被繼承的類被稱為父類(基類),這些繼承了他的類被稱為子類(派生類)。
乙個子類,當他繼承了父類的時候,繼承了父類的屬性和方法,但是沒有繼承父類的私有字段,也繼承不了父類有引數的建構函式。
所以當我們需要的時候,就要將父類的有參建構函式進行顯式呼叫,使用關鍵字 「:base」
(與之相似的是,當我們寫建構函式的過載時候可能會一段**寫好多次,我們可用 :this 來顯式的呼叫自身的建構函式)
特性單根性,乙個子類只能繼承乙個父類
傳遞性,可以逐級繼承,所有的都會被繼承下來
在 c# 中 object 這個類是所有型別的基類
當子類與父類有相同的方法時,會頂掉父類的方法(不過如果你就是像這麼做,前面加個new會比較好,因為這樣就不會出警告標記了,強迫症拯救。。。)
class
program
}public
class
renstring _name;
public
string name
set}
public
voidch(
)}public
class
xuesheng
:ren
public
void
xuexi()
}
子類物件可以轉換為父類,也就是子類可以賦值給父類
如果這個父類中裝的是子類物件,那麼可以將這個父類強制轉換為對應的子類物件
表示式和我們在 double 轉 int 的時候一樣 (子型別)父型別物件,如果要轉換的父型別物件的確是前面的子型別,那麼就會轉換成功,不是的話就會丟擲異常。因為這種方法會拋異常,所以我們一般不用這個,而是用 as。
目標型別 變數名 = 要轉換的物件 as 目標型別;
如果轉換成功,那麼賦值的就是乙個轉換過的物件,如果轉換失敗,賦值的就是 null
用 as 可以直接完成賦值這個過程,是乙個先賦值,在通過判斷是否為 null 來確定是否轉換成功的方式。
我們也可以用 is 這個返回的是 bool 值,也就是直接判斷能否轉換,可以再配合上面那個拋異常的強轉使用,從而實現賦值。
快速新增命名空間 alt + shift + f10
file 中的方法都是靜態的,
file.exists() 判斷檔案是否存在,引數是檔案路徑加名稱,詳細路徑,記得用@
file.create() 建立檔案,引數是檔案路徑加名稱,詳細路徑,記得用@
file.delete() 刪除檔案,值得注意的是,這是徹底刪除,並不會進入**站。
file.copy() 複製檔案,第乙個路徑是原位置,後面的是目標位置
file.move() 剪下檔案,兩個路徑和 copy 一樣
演算法筆記 PAT B1001
題目 卡拉茲 callatz 猜想 對任何乙個正整數 n,如果它是偶數,那麼把它砍掉一半 如果它是奇數,那麼把 3n 1 砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到 n 1。卡拉茲在 1950 年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題...
PAT甲級1001 c語言)
由輸入決定本題輸出和最高為7位 採用 03d不足3位左補0輸出。includeint main if sum 1000 sum 1000000 if sum 1000 if sum 1000000 return 0 採用將整數轉換為字串處理,用到string.h標頭檔案中的strlen 與sprin...
C 學習筆記( )
一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...