嵌套类(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
太长了我太懒了,所以这里就没有后面的内容了