C#繼承與構造函數的調用實例演示
作者:佚名
C#繼承構造函數的調用實例演示向你介紹了在實際操作過程中C#繼承構造函數的調用順序以及步驟。
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#繼承構造函數的調用有所幫助。
【編輯推薦】
責任編輯:仲衡
來源:
中國自學編程網