程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 引用訪問權限,很多老手都不懂,

C# 引用訪問權限,很多老手都不懂,

編輯:C#入門知識

C# 引用訪問權限,很多老手都不懂,


同樣代碼表現的不同行為

  創建基類(Super)和派生類(Sub)每個類有一個字段field和一個公共方法getField,並且使用內聯的方式初始化為1,方法getField返回字段field。C#和Java代碼及運行結果如下   C#   復制代碼     class Super     {         public int field = 0;           public int getField()         {             return field;         }     }       class Sub : Super     {         public int field = 1;           public int getField()         {             return field;         }     }       class Program     {         private static void Main(string[] args)         {             Super sup = new Sub();             Console.WriteLine("sup.getField() result:" + sup.getField());             Console.ReadKey();         }     }   復制代碼     Java   復制代碼 class Super {     public int field = 0;     public int getField() {         return field;     } }   class Sub extends Super {     public int field = 1;     public int getField() {         return field;     } }   public class polymorphicDefects {     public static void main(String[] args) {         Super sup = new Sub();         System.out.println("sup.getField() result:" + sup.getField());     } } 復制代碼       Java代碼運行結果表現出了多態性,而C#的方法並沒有表現出多態性。更具體的說C#中對象sub並沒有調用自己實際類型Sub中的方法而是去調用父類的方法。   可能用管了Java的童鞋,突然使用C#在一點上有些許不習慣,其實C#團隊在這裡加入了一個概念,就是引用訪問權限,一個引用代表著他的訪問權限,Sub的引用僅能對Sub類型中自己的方法進行訪問。   當然C#的方法不是支持多太,只是使用虛方法來表現方法的多態性,可看下面的例子:   復制代碼     class Super     {         public int field = 0;           public virtual int getField()         {             return field;         }     }       class Sub : Super     {         public int field = 1;           public override int getField()         {             return field;         }     }       class Program     {         private static void Main(string[] args)         {             Super sup = new Sub();             Console.WriteLine("sup.getField() result:" + sup.getField());             Console.ReadKey();         }     } 復制代碼     接下來我想說說我對C#引入引用訪問權限的看法。引入了引用訪問權限的C#比Java更加的強大了,也比Java多了一個新的特性,當然事情都是有兩個方面的,對引用那個訪問權限的引入也使C#更加復雜與不易。   不知道其他童鞋有什麼看法沒,可在評論區多交流。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved