C#構造函數(小示例證明)

繼承時父類必須聲明爲public

1.任何類都有一個無參的構造函數,是由.NET默認提供的。
2.當在類中自定義構造函數之後,默認的無參構造函數會被替換,就不存在了
3.子類默認從父類中繼承了無參構造函數,所以當我們在父類中用自定義構造函數替換默認函數之後,會報錯
4.解決方法:既然子類默認繼承的是父類的無參構造函數,就可以在父類中自定義構造函數之後,再顯式的定義無參構造函數即可;也可以在子類中顯示指定繼承父類中的指定的構造函數,需要使用base關鍵字來指定
5.在一個類中可以有多個構造函數,在子類中可以指定要實現父類中哪個構造函數

public:可以在類的內部,派生類和類的外部使用
private:只能在類內部使用
protected可以在類的內部和其派生類彙總使用

 

 

控制檯代碼(調用子類B)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComputerLibrary;

namespace 構造函數
{
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B("aaaa", 23, "美國");
            Console.WriteLine(b.Addresss);

            B b1 = new B("cccc", 44);
            Console.WriteLine(b1.Age);
            Console.ReadKey();
        }
    }
}

 

子類B類中代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ComputerLibrary
{
     public class B:A
    {
         //public B() { }
         public B(string myname, int myage, string myaddress)
             : base(myname, myage, myaddress)
        {
           
        }
         public B(string myname, int myage)
             : base(myname, myage)
         {
 
         }
    }
}

父類A的代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace leiku
{
    public class A
    {
        //public A() { }//實例化就是把類的構造函數調用一遍
        //每個類都有一個默認的無參的構造函數
        //
        public A(string myname,int myage)
        {
            this.Name = myname;
            this.Age = myage;
        }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章