首先我對上節課老師說的這幾個關鍵字
virtual進行了一下測試,用例就是老師上課講的那個,自己在編譯器上又實現了一遍override
new
**如下
using為了更明顯的看到執行結果把movie裡面的輸出改變成了 in class x。。。結果如下system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
}class
b : a
}class
c : b
}class
d : c
}class
program}}
解釋一下這個就是首先obja是乙個a型別的物件,但指向的是他的子類乙個d型別的,a中的movie是virtual所以我們往下找找到b裡面的override,可以用,但是還有子類我們繼續往下找找到c發現是個new virtual,編譯器到這裡截斷不再往下找 所以用b中的函式
第二個因為b就是b的物件所以直接執行b型別的
第三個我們從c開始找c中的movie是virtual所以我們向下找到d,d中的可用並且沒有子類我們停下輸出d
最後乙個a型別的a物件所以直接用a中函式即可
然後說一下這兩個關鍵字
refref關鍵字就和類似於c++中的&的引用傳遞,在引數前面加上ref即可實現引用傳遞out
舉例**
using這裡abc首先都沒有被賦初值,然後在testout中有了初值, 在testref中做了更改。。。system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
public
static
void testout(out
int a, out
int b, out
intc)
static
void main(string
args)
", a, b, c);
testref(
ref a, ref b, ref
c); console.writeline("
", a, b, c);
console.readline();}}
}
結果不貼了。。。比較易讀
關於sealed關鍵字
阻止某個類/某個類中的函式被繼承,如果類前面加了sealed
sealed那麼我們就沒辦法繼承a這個classclass
a
如果sealed在某個類的某個函式前面那麼這個函式將不能在派生類中被重寫
關於overloading的相關上節課的筆記中已經寫過不再贅述
C 的第三節課
計算機如何儲存資訊,按值儲存的資料的資料型別,包括int uint,long ulong,char,float,double,bool,decimal,byte,sbyte.字元值和數字值之間的異同,如何宣告和初始化變數。byte有帶有符號形式 sbyte 和無符號形式 byte 計算機並不能識別字...
csdn第三節課
筆記部分 1.網頁中影象的插入 一.屬性 1 alt 當無法顯示是給以使用者提示 2 title 滑鼠移動到上時顯示資訊 3 src 用於 中找出的路徑.二.路徑 1 當前的目錄檔案 直接寫出檔名 或 檔名 2 子集目錄檔案 同級檔名 子集檔名 3 上級檔案 檔名 多一級多加乙個 2.超連結 一.兩...
php第三節課
正規表示式 正規表示式 斜槓代表定界符 str abcde123fg456h reg d echo preg replace reg,str 將字串 str按照職責表示式reg替換為 var dump preg split reg,str 將字串str按照正規表示式拆分 arr array preg...