书看了头都大了,也不理解.在继承中,abstract ,static,virtual是怎么理解的老鸟们帮看看,有没有通俗一点的解析,谢了比如下面的代码,为什么结果是A,B,A.FUN?谢了.
-----------------------------------------------------------------------------
public A() //建普通类
{
Console.WriteLine('A');
}
public virtual void Fun() //建虚拟类
{
Console.WriteLine("A.Fun()");
}
} public class B: A
{
public B()
{
Console.WriteLine('B');
} public new void Fun()
{
Console.WriteLine("B.Fun()");
} public static void Main() //static 为先执行的类
{
A a = new B();
a.Fun();
}
}
-----------------------------------------------------------------------------
public A() //建普通类
{
Console.WriteLine('A');
}
public virtual void Fun() //建虚拟类
{
Console.WriteLine("A.Fun()");
}
} public class B: A
{
public B()
{
Console.WriteLine('B');
} public new void Fun()
{
Console.WriteLine("B.Fun()");
} public static void Main() //static 为先执行的类
{
A a = new B();
a.Fun();
}
}
static 静态
virtual 虚拟这些关键字的具体说明MSDN都有
从代码的执行序上来讲,首先
先 构造 A 类的实例,然后 构造 B 类的实例。
WHY???
B 继承 A ,在构造时一定会先构造A ,除非A 没有构造函数。
而实际上声明的是 A 的实体自然掉用Fun() 会调用 A 的Fun() 方法了。