方法默認(rèn)訪問級別: private;類默認(rèn)訪問級別 : internal庭呜。
1. 命名空間下的元素的默認(rèn)訪問修飾符
① public: 同一程序集的其他任何代碼或引用該程序集的其他程序集都可以訪問該類型或成員呻袭。
② internal: 同一程序集中的任何代碼都可以訪問該類型或成員,但其他程序集不可以訪問蜻韭。
2. 各類型中的成員的默認(rèn)訪問修飾符
剩下的修飾符主要是正對繼承這個(gè)語言特性的,擁有繼承的類型有兩個(gè)類(class)和接口(interface)。public,internal同樣可以用于類型成員柿扣。
① private: 同一類和結(jié)構(gòu)的代碼可以訪問該類型和成員肖方。
② protected: 同一類和派生(繼承特性)類中的代碼可以訪問該類型和成員。
③ protected internal: 同一程序集中的任何代碼或其他程序集中的任何派生類都可以訪問該類型或成員未状。
但要注意:
① 派生類的可訪問性不能高于其基類型俯画。換句話說,不能有從內(nèi)部類 A 派生的公共類 B司草。如果允許這種情況艰垂,將會(huì)使 A 成為公共類,因?yàn)?A 的所有受保護(hù)的成員或內(nèi)部成員都可以從派生類訪問埋虹。
② 成員的可訪問性決不能高于其包含類型的可訪問性猜憎。
③ 可以使用五種訪問類型中的任何一種來聲明類成員(包括嵌套的類和結(jié)構(gòu))。
3. 其他數(shù)據(jù)類型的修飾符
接口(interface):接口成員訪問修飾符默認(rèn)為public,且不能顯示使用訪問修飾符搔课。
類(class):構(gòu)造函數(shù)默認(rèn)為public訪問修飾符胰柑;析構(gòu)函數(shù)不能顯示使用訪問修飾符且默認(rèn)為private訪問修飾符;類的成員默認(rèn)訪問修飾符為private。
枚舉(enum):枚舉類型成員默認(rèn)為public訪問修飾符旦事,且不能顯示使用修飾符魁巩。
結(jié)構(gòu)(struct):結(jié)構(gòu)成員默認(rèn)為private修飾符;結(jié)構(gòu)成員無法聲明為protected成員姐浮,因?yàn)榻Y(jié)構(gòu)不支持繼承谷遂。
嵌套類型:嵌套類型的默認(rèn)訪問修飾符為private。 和類卖鲤,結(jié)構(gòu)的成員默認(rèn)訪問類型一致肾扰。
4. 幾個(gè)問題
(1)私有成員可以繼承嗎?
① 從內(nèi)存空間上蛋逾,子類繼承了父類集晚,那些私有成員是會(huì)被分配內(nèi)存空間的,也就是說被繼承区匣;
② 從多態(tài)角度上偷拔,繼承的作用主要是實(shí)現(xiàn)多態(tài),私有成員雖然被繼承亏钩,但卻不能在子類中訪問莲绰,這樣就沒有達(dá)到多態(tài)的目的,因此姑丑,可以說沒有被繼承蛤签。
③ 因此,在實(shí)際工作中栅哀,不可能把要繼承的成員設(shè)為私有的震肮,所以不必過于糾結(jié),理解即可留拾。
(2)怎么理解繼承戳晌?
繼承就是子類在父類基礎(chǔ)之上的縱向和橫向擴(kuò)展,縱向擴(kuò)展即重寫间驮;橫向擴(kuò)展即增加子類的特有成員躬厌。另外,父類的構(gòu)造函數(shù)和析構(gòu)函數(shù)子類無法繼承竞帽,但可以調(diào)用扛施。
namespace ClassLearning
{
class Program
{
static void Main(string[] args)
{
Car car = new Car();
Console.WriteLine(car.NumWheels);
}
}
class Vehicle
{
private int _numWheels;
public int NumWheels { get => _numWheels; set => _numWheels = value; }
// 父類構(gòu)造方法(有參)
public Vehicle(int numwheels)
{
this.NumWheels = numwheels;
}
}
class Car:Vehicle
{
public string Color { get; set; }
// 子類構(gòu)造方法,必須提供父類的參數(shù)
public Car(string color) :base(8)
{
this.Color = color;
}
}
上述代碼中屹篓,實(shí)例化 car 對象時(shí)疙渣,先調(diào)用父類 Vehicle 的構(gòu)造器,然后才調(diào)用子類的構(gòu)造器堆巧。
注意:實(shí)例化子類對象時(shí)妄荔,子類會(huì)自動(dòng)調(diào)用父類的無參構(gòu)造器泼菌,當(dāng)父類沒有無參構(gòu)造器,則在子類構(gòu)造器中必須提供與父類有參構(gòu)造器相應(yīng)的實(shí)參啦租。