C 學習筆記之里式轉換

2021-07-11 17:30:02 字數 860 閱讀 9208

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 在所有的物件...