读书人

对象解决方法

发布时间: 2012-05-01 12:48:58 作者: rapoo

对象

C# code
class A    {        public void F() { Console.WriteLine("A.F"); }        public virtual void G() { Console.WriteLine("A.G"); }    }    class B : A    {        new public void F() { Console.WriteLine("B.F"); }        public override void G() { Console.WriteLine("B.G"); }    }    class virtualMethod    {        internal static void main()        {            B b = new B();            A a = b;//什么意思?对象a就是对象b了吗?            a.F();//为什么要输出A.F,它不是相当于b.F()吗            b.F();            a.G();//a到底是A的对象还是B的对象?            b.G();        }    } 

产生的输出:
A.F
B.F
B.G
B.G

[解决办法]
C# code
class virtualMethod    {        internal static void main()        {            B b = new B();            //这儿仅仅是将b的引用复制给a,a和b这时候指向内存中同一个地址。            A a = b;//什么意思?对象a就是对象b了吗?            //b中的F()使用了new关键字,相当于b有二个F()方法。            a.F();//为什么要输出A.F,它不是相当于b.F()吗            b.F();           //a在内存中的方法表是A的不是b的。            a.G();//a到底是A的对象还是B的对象?            b.G();        }    }
[解决办法]
a和b指向同一个对象,a可用,b亦可用
[解决办法]
1楼写的很详细了
[解决办法]
这段代码主要让你理解什么是虚方法

读书人网 >C#

热点推荐