class Program
{
static void Main()
{
Parent pa = new Parent();
pa.Say(); //这个会说"Hello,you are in Parent!"
Parent pb = new Child();
pb.Say(); //这个会说"Hello,you are in Child"
//为什么pa pb 都是相同的Parent类型的,
//而他们的同一个方法却调用了不同的方法体呢? //如果问题出在new后面的构造函数上,可以给我解释一下么?
//还有,如果另外还有一个类,里面有一个泛型集合List<Parent>
//存了pa pb,这时我看不到pa pb 是怎么new 出来的,
//那我怎么判断pa pb最后会调用自己的方法还是调用子类的方法??
}
}
class Parent
{
public string name;
public Parent() { } public Parent(string n)
{
this.name = n;
} public virtual void Say()
{
Console.WriteLine("Hello,you are in Parent!");
}
}
class Child:Parent
{
public int age;
public Child() { } public Child(string n, int a)
: base(n)
{
this.age = a;
} public override void Say()
{
Console.WriteLine("Hello,you are in Child");
}
}
{
static void Main()
{
Parent pa = new Parent();
pa.Say(); //这个会说"Hello,you are in Parent!"
Parent pb = new Child();
pb.Say(); //这个会说"Hello,you are in Child"
//为什么pa pb 都是相同的Parent类型的,
//而他们的同一个方法却调用了不同的方法体呢? //如果问题出在new后面的构造函数上,可以给我解释一下么?
//还有,如果另外还有一个类,里面有一个泛型集合List<Parent>
//存了pa pb,这时我看不到pa pb 是怎么new 出来的,
//那我怎么判断pa pb最后会调用自己的方法还是调用子类的方法??
}
}
class Parent
{
public string name;
public Parent() { } public Parent(string n)
{
this.name = n;
} public virtual void Say()
{
Console.WriteLine("Hello,you are in Parent!");
}
}
class Child:Parent
{
public int age;
public Child() { } public Child(string n, int a)
: base(n)
{
this.age = a;
} public override void Say()
{
Console.WriteLine("Hello,you are in Child");
}
}
//为什么pa pb 都是相同的Parent类型的
继承的话,是同一个类型,父类、子类,本质上一样
但是他们初始化的实例不一样
所以Child类也是一个Parent类型。(你可以把Parent类看成是一个基类,而child类是一个基类的扩展类)
Parent pa = new Parent();
pa.Say(); 自然就调用父类的Say方法
而Pb.say();就调用Child的Say方法。至于List<Parent>,就看你怎么实例化了,
如果是
List<Parent> pa = new List<Parent>();
pa.Say(); 仍调用Parent中的say方法;List<Parent> pb = new List<Child>();
pb.Say(); 调用Child中的Say方法;
http://blog.csdn.net/zhuanshen712/archive/2008/12/26/3611573.aspx
http://blog.csdn.net/zhuanshen712/archive/2008/12/26/3612076.aspx
他就会调用不同的方法
这叫“上有政策,下有对策”一个领导带着手下人去喝酒
领导说“今天儿高兴,大家都给我喝好了!来一人一瓶酒,我喊‘满上’,你们都给可劲滴喝”
于是一帮热血青年都拿着酒下去
不过,现在有A,B两个人,他们都不会喝酒,可领导发话了,咋办呢?
“上有政策,下有对策”,A把酒瓶里的酒换成了白开水,B把酒瓶里的酒换成了雪碧过一会,领导说“满上”,热血青年们都拿着酒一股脑干了,呵呵,领导高兴了,事情圆满了实际上这个就是如此,表面上看,大家都是一样,实际上已经不一样了
List<Parent>是无法强制转换为List<Child>的