问一个很简单的问题:A a=b;是什么意思?
代码如下:
using System;
class A //定义类A
{
public void F() //方法F
{
Console.WriteLine("A.F");
}
public virtual void G() //虚方法G
{
Console.WriteLine("A.G");
}
}
class B:A //定义类B,继承A
{
new public void F() //覆盖类A方法F
{
Console.WriteLine("B.F");
}
public override void G() //重载类A虚方法G
{
Console.WriteLine("B.G");
}
}
class Test
{
static void Main(){
B b=new B(); //实例化类B
A a=b;
a.F(); //运行结果A.F,问题在这里
b.F(); //运行结果B.F
a.G(); //运行结果B.G
b.G(); //运行结果B.G
Console.ReadLine();
}
}
不很明白,是引用吗?此时的a代表的是b吗?那为什么a.F(); 运行结果又是A.F呢??高手回答一下?
谢谢啦,刚接触C#,实在想不明白,呵呵!