2016-03-28 179 views
2

我正在閱讀c#文檔,我無法理解此類轉換爲基類的概念。類型轉換爲基類

與Java一樣,即使基類引用可能包含對派生類型對象的有效引用,也不能使用對基類的引用來訪問派生類的成員和方法。

你可以引用一個派生類具有參考所取得的類型隱含

DerivedClass derived1 = new DerivedClass(); 
BaseClass base1 = derived1;` 

這句話是什麼「你可以引用一個派生類與參考所取得的類型隱含(是什麼在上下文中)」

例如隱含的意思是,如果派生類的方法說'derived_name()」

是否意味着我不能這樣做,所以

base1.derived_name() // invalid

回答

3

這意味着你並不需要顯式轉換派生對象的基本類型。

DerivedClass derived1 = new DerivedClass(); 

// This is an implicit coversion: 
BaseClass base1 = derived1; 

// This is an explicit conversion: 
DerivedClass derived2 = (DerivedClass) base1; 

無論如何轉換,您都無法從基類型的變量調用派生類中定義的方法。要調用衍生類型的方法,您需要明確地轉換爲該類型:

((DerivedClass) base1).derived_name();