我正在阅读c#的文档,我无法理解基类的Typecasting这个概念。
与Java一样,即使基类引用可能包含对派生类型对象的有效引用,也不能使用对基类的引用来访问派生类的成员和方法。
您可以隐式引用派生类来引用派生类:
DerivedClass derived1 = new DerivedClass();
BaseClass base1 = derived1;`
语句"你可以通过引用类型的引用来引用派生类IMPLICITLY(在上下文中隐含的意思)"
例如,如果Derived类有一个方法说`derived_name()'
这是否意味着我不能这样做
base1.derived_name() // invalid
答案 0 :(得分: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();