C 學習筆記 10 01

2021-10-09 14:30:42 字數 1478 閱讀 7382

每乙個類都應該寫在乙個新的類檔案裡面,不要都寫在主檔案裡。

在寫類的時候會發現,好多的類中有相同的屬性和方法,那麼就可以將這些相同的屬性和方法寫在乙個類中,而其他的類去繼承他,這樣就不需要講這些相同的**重複書寫多次了。這樣,這個被繼承的類被稱為父類(基類),這些繼承了他的類被稱為子類(派生類)。

乙個子類,當他繼承了父類的時候,繼承了父類的屬性和方法,但是沒有繼承父類的私有字段,也繼承不了父類有引數的建構函式。

所以當我們需要的時候,就要將父類的有參建構函式進行顯式呼叫,使用關鍵字 「: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 ...