日期:2014-05-18  浏览次数:20867 次

C#中父类和子类对象之间强制装换的问题
初学者,问题浅薄,基础不够。还望见谅!
  Base_Class baseclass = new Derived_Class();
  Derived_Class derivedclass = new Derived_Class();

  在内存中的代码段有区别吗?前面的声明不同究竟导致他们的区别在哪里?
  在调用基类和父类中的方法时局限性体现在哪?
 (我是在看overide和new的区别时被弄纠结的。)还请大家讲解一下,麻烦了。

------解决方案--------------------
探讨

引用:
初学者,问题浅薄,基础不够。还望见谅!
Base_Class baseclass = new Derived_Class();
Derived_Class derivedclass = new Derived_Class();

在内存中的代码段有区别吗?前面的声明不同究竟导致他们的区别在哪里?
在调用基类和父类中的方法时局限性体现在哪?
(我是在看over……

------解决方案--------------------
是说这是之前class B 的override那段代码是也应该被覆盖了是吗?我可以理解我一标明了vitural就相当于我在stack里留了一段空,让我的继承者来填充

=======================

差不多可以这样理解,当然vitural不是强制非要让子类去填空,他只是说可以填可以不填,不填就用父类的,填了就用子类的

ps:实际上面说的内部原理部分,就掌握和使用上记住一句话就成“方法调用使用就近原则”,对于同名方法,从当前实例套用的方法表出发,按继承关系追溯,谁离的最近就用谁的
具体可以看这里
http://www.cnblogs.com/TextEditor/archive/2010/05/25/1743539.html