c 派生類轉換為基類的意義

2021-08-10 16:15:07 字數 925 閱讀 1788

由於這段時間一直糾結於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種繼承方式 公用 保護 私有繼承 中,公用派生類才是基類真正的子型別,它完整地繼承了基類的功能。不同型別資料之間在一定條件下可以進行型別的轉換。基類與派生類物件之間是否也有賦值相容的關係,可否進行型別間的轉換?回答是可以的。基類與派生類物件之間有賦值相容關係,由於派生類中包...