C#继承构造函数的调用实例演示
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace test
- {
- class Program
- {
- static void Main(string[] args)
- {
- //***种情况 --C#继承构造函数的调用
- A a = new B();//x=1,y=0
- a.PrintFields();//x=1,y=-1
- //因为构造B之前,先执行变量,y没有明确赋值,默认为0。
- //A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,
- //所以执行B类的PrintFields方法,结果输出。
- //虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出
- //第二种情况 --C#继承构造函数的调用
- B b = new B();//x=1,y=0
- b.PrintFields();//x=1,y=-1
- //因为构造B之前,先执行变量,y没有明确赋值,默认为0。
- //执行B的构造函数,因为B继承A,所以先执行A的构造函数。//
- A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,
- //所以执行B类的PrintFields方法,结果输出。
- //虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出 //第三种情况
- A c = new A();
- c.PrintFields();//什么都不输出
- Console.ReadKey();
- }
- }
- class A //C#继承构造函数的调用
- {
- 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);
- }
- }
- }
C#继承构造函数的调用的基本情况就向你介绍到这里,希望对你学习和掌握C#继承构造函数的调用有所帮助。
【编辑推荐】