该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在VS2010 C#中试了试楼主的代码。
方法用父类对象作形参 调用时用子类对象作实参, 则在该方法内使用的是 父类对象的方法。
打个断点但不运行以下 看看执行步骤你就明白了~
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
public class Wo
{
public int m;
public Wo()
{
Console.WriteLine("WO constractor");
add(1);
}
public void add(int i)
{
m+=i;
Console.WriteLine("WO add");
}
public void print()
{
Console.WriteLine(m);
}
}
public class No: Wo
{
public No()
{
add(2);
Console.WriteLine("NO constractor");
}
new public void add(int i)
{
m += i * 2;
Console.WriteLine("WO add");
}
public new void print()
{
Console.WriteLine(m);
}
}
public class Try
{
public static void add(Wo w)
{
w.add(6);
w.print();
}
public static void Main()
{
add(new No());
Console.ReadKey();
}
}
}
结果如下:
WO constractor
WO add
WO add
NO constractor
WO add
11