C#override的疑问
namespace ConsoleApplication1
{
public class Program
{
protected string name;
public Program()
{
Console.WriteLine("Program无参构造方法");
}
public virtual void pp()
{
Console.WriteLine("Program无参虚方法");
}
}
public class Person : Program
{
Person()
{
Console.WriteLine("Person无参构造方法");
}
static void Main(string[] aegs)
{
p2.pp();
((Program)p2).pp();//---------①
Console.ReadKey();
}
public override void pp()
{
Console.WriteLine("Person无参方法");
//base.pp();//----------------②
}
}
}
①处是类的上载吧? 把p2强制转换为Program类的对象,调用的是Program类里的方法吧?
override是把父类的pp方法改写了 还是 只是把父类的方法隐藏了重写了属于自己的方法(那和new有什么区别)?
为什么我把②处的语句注释后,输出的全是"Person无参方法"
把②处的注释去掉后,输出的就是"Person无参方法";"Program无参虚方法"?
思路有点混乱了..究竟我在①处的理解错误还是override理解错误了?