繼承時父類必須聲明爲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; }
}
}