namespace TestInterview
{
public class A
{
public void printA()
{
Console.WriteLine("printA");
}
public virtual void valueA()
{
Console.WriteLine("valueA");
}
} public class B:A
{
public new void printA()
{
Console.WriteLine("printB");
}
public override void valueA()
{
Console.WriteLine("valueB");
}
} class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
B BTemp= new B();
A ATemp= new A();
ATemp = BTemp ;
ATemp.printA();
ATemp.valueA();
BTemp.printA();
BTemp.valueA();
Console.ReadLine(); }
}
}
------------------------------------------
结果:printA
valueB
printB
valueB
为什么?为什么不是:printB
valueB
printB
valueB
请高手指点!谢谢。
{
public class A
{
public void printA()
{
Console.WriteLine("printA");
}
public virtual void valueA()
{
Console.WriteLine("valueA");
}
} public class B:A
{
public new void printA()
{
Console.WriteLine("printB");
}
public override void valueA()
{
Console.WriteLine("valueB");
}
} class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
B BTemp= new B();
A ATemp= new A();
ATemp = BTemp ;
ATemp.printA();
ATemp.valueA();
BTemp.printA();
BTemp.valueA();
Console.ReadLine(); }
}
}
------------------------------------------
结果:printA
valueB
printB
valueB
为什么?为什么不是:printB
valueB
printB
valueB
请高手指点!谢谢。
解决方案 »
- 请教请教。。winform datagridview 如何设置列宽正好为列标题宽
- 请教如何在C#中dllimport使用VB6编译的Activexdll文件?
- 有搞C# SOCKET的人不?
- 怪!.Net里居然没有提供这个重载形式:AppDomain.Load(string assemblyFile)
- Vista 64位下Framework 2.0问题
- 有关发送消息的时效设置
- 什么不能建立const string[]数组?只能用readonly吗?
- 各位哪有vs.net下载啊!!!
- C#调用api如何传递null参数
- 由于大家踊跃参加活动,所以今天再来两次,每次100,前两个得分!!!
- C#读取word问题!
- *** 问一个简单的小问题(winform),在dataGrid 控件 中,如何动态定义 某一列的显示宽度。
这又是为什么呢,
zhy0101(香蕉) 能不能说具体一点呢。
ATemp.printA();调用的是A里的方法,因为B:A,且B没有相应的重载方法
ATemp.valueA();调了B里的方法(重载A类的虚拟方法)
感谢:copall(民工-〉席卷天下-包举宇内-囊括四海-并吞八荒!) ( )
突然大悟,好了,马上结贴给分。