virtual 与 override
- C# code
class A { public A(){ PrintFields(); } public virtual void PrintFields(){} } class B : A { int x = 1; int y; public B() { y = -1; } public override void PrintFields() { Console.WriteLine("x={0},y={1}", x, y); } } class Program { static void Main(string[] args) { B b = new B(); b.PrintFields(); Console.ReadKey(); } }
输出为什么是
x=1,y=0
x=1,y=-1
为什么输出两次呢
[解决办法]
构造函数输出一次,b.PrintFields输出一次。
[解决办法]
先执行A的构造,这是y还是0,再执行b的构造,y变成-1