一道面试题目引发的思考

深入理解对象模型对我们理解面向对象的继承多态会大有裨益。
一直没找到C#这方面的知识,粗浅的看过一点侯捷C++对象模型,实际分析问题的时候发现还是没有深入理解。
无奈到园子里来请教大家。也希望高手前辈能够不吝赐教。如果有意写一些C#对象模型相关的文章我想对于新人来说可谓是莫大的帮助。期待,提前感谢。

你知道下面的代码会输出什么么。
A内部的嵌套类B继承自A

using System;

public class A
{

    
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;

        BTemp.printA();
        ATemp.printA();
        Console.ReadLine();
    }

}

 
上面的代码讲输出
printA
printA
但是在注释1的地方加上public修饰符结果将变成
printB
printA
上网搜了很久参考了下面这篇文章终久还是难解其中之密
http://www.cnblogs.com/caomao/archive/2005/08/16/175459.html  再此感谢Zendy,我很喜欢这篇文章的风格

因为才疏学浅,如果是我少见多怪了。
希望兄弟们善意的提个醒。我好马上从这里撤离,省却在这里丢人现眼。哈哈。

原文地址:https://www.cnblogs.com/sky266/p/946035.html