1.調用父類無參構造函數是默認的!
子類的構造方法默認都去訪問了父類的無參構造方法:在子類中的構造方法后都有一行默認語句 base()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Fu { public Fu() { Console.WriteLine( "fu" ); } } class Zi : Fu { public Zi() : base () //不管是否顯式調用,控制臺都會輸出fu { Console.WriteLine( "zi" ); } } Zi z = new Zi(); |
先執行父類的構造函數把父類初始化完成,再初始化子類的。
2.如何訪問父類的有參構造函數?
可以通過super(參數)去訪問父類中的有參構造函數??梢酝ㄟ^this(參數...)去訪問本類中的其他構造函數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Fu { public Fu( int a) { Console.WriteLine( "fu" +a); } } class Zi : Fu { public Zi(): base (0) //調用父類有參構造函數 { Console.WriteLine( "zi" ); } public Zi( int a): base (a) { Console.WriteLine( "zi" +a); } } |
如果定義了構造函數,則類就不會有默認的無參構造函數;如果父類中沒有默認的,則子類構造函數必須顯示調用父類的構造函數
新聞熱點
疑難解答