一个简单的C#问题?
//源码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
using System;
public class A
{
public void F()
{
Console.WriteLine("A.F()");
}
}
class B : A
{
private A a;
public B()
{ }
public B(A a)
{
this.a = a;
}
public new void F()
{
a.F();
}
}
class Test
{
public static void Main()
{
B b1 = new B();
B b2 = new B(b1);
b2.F();
Console.Read();
}
}
}
//输出结果是:A.F()
为什么会调用到父类的F()方法呢?????
------解决方案--------------------B b2=new B(b1);//b2.a指向的是b1.a
b2.F()调用b2.a.F();
当然是调用了父类的方法了
------解决方案--------------------并不是因为B是A的子类
而是因为你在B中定义了一个A类的变量a
输出“A.F()”的是a这个变量
跟父类没有关系
------解决方案--------------------C# code
//源码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
using System;
public class A
{
public void F()
{
Console.WriteLine("A.F()");
}
}
class B : A
{
private A a;
public B()
{ }
public B(A a)
{
this.a = a;
}
[color=#FF0000]public new void F()
{
a.F(); //这个调用什么?你看清楚
} [/color]
}
class Test
{
public static void Main()
{
B b1 = new B();
B b2 = new B(b1);
b2.F();
Console.Read();
}
}
}