访问级别约束0906
生活随笔
收集整理的這篇文章主要介紹了
访问级别约束0906
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 訪問級別約束 子類訪問級別不能比父類高 兒子能去的地方老子一定能去 方法、屬性等暴露的返回值、參數的數據類型不能比方法、屬性或者所在類的可訪問級別低,因為這些方法、屬性要能在高級場合出現,如果用到的類型卻不能在這個場合出現就明顯不合理了(可訪問性不一致錯誤) 2 internal 修飾的類只能在當前程序集中被訪問 3 靜態成員?與 實例成員 ????靜態方法調用的屬性字段也必須是靜態的 ????靜態方法調用 類名.方法 ????實例方法只能實例化之后調用 并且也沒法調用靜態方法 ????靜態方法里面不能直接調用實例成員 ????實例方法中可以調用靜態方法 靜態成員屬于類所有,非靜態成員屬于類的實例所有 C#靜態方法屬于類所有,類實例化前即可使用 在實例方法中可以直接調用靜態方法, 在靜態方法中不可以直接調用實例方法 靜態方法和靜態變量創建后始終使用同一塊內存(靜態存儲區),而使用實例的方式會創建多個內存 class Student
????{
????????private static string name;
????????public static string Name
????????{
????????????get { return name; }
????????????set { name = value; }
????????}
????????//靜態方法
????????public static void SayHi()
????????{
????????????//靜態方法里面不能直接調用實例成員
????????????Console.WriteLine("我是"+name);
????????}
????????//實例方法
????????public void Test()
????????{
????????????//實例方法中可以調用靜態方法
????????????SayHi();
????????}
????} static void Main(string[] args)
????????{
????????????//靜態方法調用 類名.方法
????????????Student.SayHi();
????????????//實例方法只能實例化之后調用 并且也沒法調用靜態方法
????????????Student stu = new Student();
????????????stu.Test();
????????}
????????????//讓父類引用指向子類對象
??????????? Person p2 = new Student("張三", 13, "男");//一個學生是一個人
????????????if (p2 is Student)//判斷p2是否為student類型
????????????{
????????????????Console.WriteLine("學生");
????????????}
????????????Student s = p2 as Student;//as 類型轉換 只能轉換引用類型 將p2轉換為student類型
????????????Student s2 = p3 as Student;//這樣轉換會出錯 因為P3是基于teacher類型 s2會為null
????????????if (s2!=null)//防止報錯
????????????{
????????????????s2.SayHello();
????????????}
????{
????????private static string name;
????????public static string Name
????????{
????????????get { return name; }
????????????set { name = value; }
????????}
????????//靜態方法
????????public static void SayHi()
????????{
????????????//靜態方法里面不能直接調用實例成員
????????????Console.WriteLine("我是"+name);
????????}
????????//實例方法
????????public void Test()
????????{
????????????//實例方法中可以調用靜態方法
????????????SayHi();
????????}
????} static void Main(string[] args)
????????{
????????????//靜態方法調用 類名.方法
????????????Student.SayHi();
????????????//實例方法只能實例化之后調用 并且也沒法調用靜態方法
????????????Student stu = new Student();
????????????stu.Test();
????????}
? 4 多態:不同的對象調用同一個方法 做出的行為是不一樣的 ?????多態就是指不同對象收到相同消息時,會產生不同行為,同一個類在不同的場合下表現出不同的行為特征 ? ????多態的作用:把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。
?
????里氏替換原則: 父類引用指向子類的對象 父類對象不能夠替換子類
????關鍵字 is? as
????????????//讓父類引用指向子類對象
??????????? Person p2 = new Student("張三", 13, "男");//一個學生是一個人
????????????if (p2 is Student)//判斷p2是否為student類型
????????????{
????????????????Console.WriteLine("學生");
????????????}
????????????Student s = p2 as Student;//as 類型轉換 只能轉換引用類型 將p2轉換為student類型
??????????? Person p3 = new Teacher("張三", 13, "男");????????????Student s2 = p3 as Student;//這樣轉換會出錯 因為P3是基于teacher類型 s2會為null
????????????if (s2!=null)//防止報錯
????????????{
????????????????s2.SayHello();
????????????}
轉載于:https://www.cnblogs.com/liuzhiye/archive/2012/09/08/2676609.html
總結
以上是生活随笔為你收集整理的访问级别约束0906的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大劫难电影在哪里下载
- 下一篇: 利益驱动 需求驱动 技术驱动 谁才是