嵌套類(Nested Class)是在類中定義的類。以下把擁有內嵌類的類稱為外部類。
嵌套類分為靜態嵌套類和非靜態嵌套類,其中非靜態嵌套類也被稱為內部類。嵌套類在
UML中是composite的另外一種代碼表示形式,表示耦合度更高,並且與外部類更加緊密。
一般類的訪問修飾符可以定義為默認的internal或者public,而內嵌類就有比較多的選擇,
可以是為protected、internal、public以及默認的private。
內嵌類與外部類的訪問限制
嵌套類可以訪問外部類的方法、屬性、字段而不管訪問修飾符的限制。如:
1 public class A { 2 private static int _AInt; 3 private int _instanceInt; 4 private static void AMethod() { 5 Console.WriteLine(_AInt); 6 } 7 public void SayIt() { 8 NestedA.Method(this); 9 } 10 private class NestedA{ 11 public static void Method(A a) { 12 //靜態成員 13 _AInt = 100; 14 AMethod(); 15 //實例成員 16 a._instanceInt = 10; 17 a.SayIt(); 18 } 19 } 20 }
但是外部類只能夠訪問修飾符為public、internal
嵌套類的字段、方法、屬性。示例如下:
1 public class A { 2 public static void AMethod() { 3 //成功 4 NestedA.StaticMethod(); 5 //編譯報錯 6 NestedA._Int = 100; 7 NestedA ins=new NestedA(); 8 //成功 9 ins.Method(); 10 //編譯報錯 11 ins._instanceInt = 100; 12 } 13 private class NestedA { 14 private static int _Int; 15 private int _instanceInt; 16 public static void StaticMethod() { } 17 public void Method(){} 18 } 19 }
以上均摘自百度文庫,文檔原文連接是:http://wenku.baidu.com/view/2ad68f6b561252d380eb6e45.html
太長了我太懶了,所以這里就沒有后面的內容了