none
大家看看这两个题有什么区别!!关于子类重写方法的 RRS feed

  • 问题

  • 第一题;
    public abstract class A
        {
            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()
            {
                A a = new B();
                a.Fun();
                Console.Read();
            }
        }
    第二题;
    public abstract class A
        {
            public A()
            {
                Console.WriteLine('A');
            }
            public virtual void Fun()
            {
                Console.WriteLine("A.Fun()");
            }
        }
        public class B : A
        {
            public B()
            {
                Console.WriteLine('B');
            }
            public override void Fun()
            {
                Console.WriteLine("B.Fun()");
            }
            public static void Main()
            {
                A a = new B();
                a.Fun();
                Console.Read();
            }
        }
    主要是在后面那个fun的重写的时候,假如用override的话,在A a = new B();中a是A的对象,怎么还会重写呢?
    具体什么时候重写,这块晕死了!!
    或者谁可以给个例子帮我理解一下,我是很迷糊!!
    谢谢!!
    2009年6月17日 1:44

答案

全部回复