一道面试题目引发的思考
深入理解对象模型对我们理解面向对象的继承多态会大有裨益。
一直没找到C#这方面的知识,粗浅的看过一点侯捷C++对象模型,实际分析问题的时候发现还是没有深入理解。
无奈到园子里来请教大家。也希望高手前辈能够不吝赐教。如果有意写一些C#对象模型相关的文章我想对于新人来说可谓是莫大的帮助。期待,提前感谢。
你知道下面的代码会输出什么么。
A内部的嵌套类B继承自A
using System;
![](/Images/OutliningIndicators/None.gif)
public class A
{
![](/Images/OutliningIndicators/InBlock.gif)
void printA()
{
Console.WriteLine("printA");
}
public class B : A
{
new void printA() // 1
{
Console.WriteLine("printB");
}
}
public static void Main(String[] args)
{
B BTemp = new B();
A ATemp = BTemp;
![](/Images/OutliningIndicators/InBlock.gif)
BTemp.printA();
ATemp.printA();
Console.ReadLine();
}
}
一直没找到C#这方面的知识,粗浅的看过一点侯捷C++对象模型,实际分析问题的时候发现还是没有深入理解。
无奈到园子里来请教大家。也希望高手前辈能够不吝赐教。如果有意写一些C#对象模型相关的文章我想对于新人来说可谓是莫大的帮助。期待,提前感谢。
你知道下面的代码会输出什么么。
A内部的嵌套类B继承自A
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
上面的代码讲输出
printA
printA
但是在注释1的地方加上public修饰符结果将变成
printB
printA
上网搜了很久参考了下面这篇文章终久还是难解其中之密
http://www.cnblogs.com/caomao/archive/2005/08/16/175459.html 再此感谢Zendy,我很喜欢这篇文章的风格
因为才疏学浅,如果是我少见多怪了。
希望兄弟们善意的提个醒。我好马上从这里撤离,省却在这里丢人现眼。哈哈。