假設我們已經兩類汽車和司機,,
,我們能夠做出像正在運行Car c = new Driver();在C#
Car c=new Driver();
,並能夠對象調用Car類的成員,但不是驅動程序類的原因和時機? ?
假設我們已經兩類汽車和司機,,
,我們能夠做出像正在運行Car c = new Driver();在C#
Car c=new Driver();
,並能夠對象調用Car類的成員,但不是驅動程序類的原因和時機? ?
如果您確定Car
實際上是Driver
,那麼您可以將其轉換爲driver
以訪問Driver
的成員。因此,無論
((Driver)c).DriverMember();
這將拋出一個異常,如果c
不是Driver
或者
Driver d = c as Driver;
if(d != null){
d.DriverMethod();
}
的原因是因爲c
是Car
型的,那麼只有租車的成員都可用。
例如,假設您有List<Car>
,其中添加了一些Car
對象和一些Driver
對象。然後它非常有意義,只有Car
的成員纔有可能使用。
另外,我認爲Driver
從Car
在這種情況下繼承(這實際上是一個非常奇怪的繼承,因爲司機是不汽車)。
儘管參考c
指向Driver
對象,但參考類型(Car
)確定可以在其上調用哪些方法。
作爲一個附註,Driver
作爲從Car
派生的類沒有多大意義。類繼承通常可以表示爲「是-a」關係,而大多數驅動程序不是汽車。
就你而言,Car是驅動程序的基類。這就是爲什麼您可以創建新的驅動程序對象,但將它們「放入」Car對象的問題。
但是,只有類「車」的成員可見的原因是,你的對象c是從類型車,而不是從類型驅動程序和汽車有少於驅動程序的成員。
嘗試發佈更多代碼 - 沒有更多上下文很難提供幫助。 – 2010-12-03 09:06:28