1、裡式轉換:
首先寫三個類,乙個父類,兩個子類,如下:
public class persion
}public class student : persion
}public class teacher : persion
}
(1)、子類物件可以賦值給父類物件
student s = new student();
persion p = s; // 子類物件賦值給父類物件,這兩行可以寫成下面一行:
persion p = new student();
應用:當乙個地方需要用父類作為引數時,我們可以使用子類代替。
string 的 join 方法,第二個引數要放的是object 陣列,由於object是所有類的父類,所以此處可以其任意子類的陣列:
string.jion("|", new string);
(2)、如果父類物件中裝的是子類的物件,可以將這個父類物件強轉為子類物件。
persion p = new student();
student s = (student)p;
// 強轉成功,因為p中存放的是student的物件。
teacher t = (teacher)p;
// 強轉失敗。因為p中沒有存放teacher的物件。
一般在強轉之前要先做乙個判斷:
if (p is teacher) // 表示:如果p可以強轉成teacher,返回true,否則返回false。
teacher t = p as teacher; // 表示:如果p可以強轉成teacher,則返回teacher的物件,否則返回null。
C 學習筆記之 轉換
有些型別的轉換不會丟失資料或精度。語言會自動進行轉換,這叫做隱式轉換 從位數更少的源轉換為位數更多的目標型別時,目標中多出的位需要用0或1填充。從更小的無符號型別轉換為更大的無符號型別時,目標型別多出來的最高位都以0進行填充,這叫零擴充套件。無符號的 byte ushort char ushort ...
C 學習筆記14 黎克特制轉換
黎克特制轉換例項 黎克特制轉換原則 liskov substitution principle,lsp 物件導向設計的基本原則之一。黎克特制轉換原則中說,任何父類可以出現的地方,子類一定可以出現。黎克特制轉換,實質上就是型別的轉換,在學c 過程中,我們一定經歷過型別轉換,如將int轉換為double...
裡式轉換原則
肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士 barbara liskov 提出來的。定義1 如果對每乙個型別為 t1的物件 o1,都有型別為 t2 的物件o2,使得以 t1定義的所有程式 p 在所有的物件...