由於這段時間一直糾結於c#繼承的一些小問題,所以把這段時間的收穫寫下。
**如下:
using system;
using system.collections.generic;
namespace ******x
}class baima:ma
}static void main()
}}
書上有這樣一句話:派生類物件允許轉換為基類物件;但是不允許基類物件轉換為派生類物件。
為什麼呢?
首先打個比方,把類ma當成乙個種類馬,也就是乙個基類;把類baima當成種類白馬,也就是乙個派生類。
白馬可以說是馬,而馬不能說成白馬.
借用一位大神的話就是:資料型別轉換講究精度,而不是講究大小關係。
看上面**
用is可以知道,物件a,c即可以說是ma型別,也可以說是baima型別
但是物件a的主體是ma,卻無法呼叫biama裡的方法;
而c的主體在baima,可以同時呼叫兩個類的方法;
那為什麼還要這樣去用呢?
用上面的比方來說就是:a本來是白馬,但是我對別人說a是馬,於是別人在不看a的情況下就只能把a當成馬.
我的理解就是這樣的轉換可以隱藏a的一些資料與資訊.
我是c#的新學者,上面如有錯誤請大神指出批評
C 派生類強制轉換為基類
在多型的使用時,派生類的指標或引用能夠轉換為基類的指標或引用,即 基類的指標 能夠指向 派生類的基類部分 base b derived d b和d指向的內容是相等的,b d,由於之間有乙個隱式轉換即 b base d b和d的位址是不同的int b int d 由於b指向d的基類部分,d指向的是完整...
C 基類 派生類指標轉換
主要用到static cast和dynamic cast dynamic cast 1.dynamic cast是非常安全的,因為在不行的時候他會返回空指標 2.在多繼承中,由乙個基類轉換到另乙個基類,只能用dynamic cast 但是dynamic cast的使用是有侷限的,也就是基類一定要有虛...
派生類到基類的轉換 和基類到派生類的轉換
一 基類與派生類的轉換 3種繼承方式 公用 保護 私有繼承 中,公用派生類才是基類真正的子型別,它完整地繼承了基類的功能。不同型別資料之間在一定條件下可以進行型別的轉換。基類與派生類物件之間是否也有賦值相容的關係,可否進行型別間的轉換?回答是可以的。基類與派生類物件之間有賦值相容關係,由於派生類中包...