【发布时间】:2013-03-27 17:10:32
【问题描述】:
有点菜鸟问题,但是嘿嘿。
例子:
BaseClass bc = new ExtendedClass(); //Assume ExtendedClass inherits from BaseClass
((BaseClass)bc).ExtendedMethod();
bc.ExtendedMethod();
((ExtendedClass)bc).ExtendedMethod(); //overridden in ExtendedClass
ExtendedClass ec = new ExtendedClass();
((BaseClass)ec).ExtendedMethod();
ec.ExtendedMethod();
((ExtendedClass)ec).ExtendedMethod(); //overridden in ExtendedClass
?
bc.ExtendedMethod(); 和 ec.ExtendedMethod(); 在运行时会调用哪些实现?他们会有所不同吗?我假设强制转换的调用将调用类中的特定实现。
编辑:添加相关标签。
【问题讨论】:
-
你为什么不自己试一试,设置一个带有基类和子类的示例项目并查看
-
只有在扩展中出现的方法需要转换才能从扩展的基类对象中使用,我实际上是在看我是否可以抓住这个 ty alex 并且实际上将它放在有用的地方,这样每个程序员都不必测试它来找出答案。
-
视情况而定; ExtendedMethod 是虚拟的吗?
-
这是一个关于概念的问题——它可能是。
标签: c# inheritance casting polymorphism base-class