嵌套类(Nested Class)是在类中定义的类。以下把拥有内嵌类的类称为外部类。
嵌套类分为静态嵌套类和非静态嵌套类,其中非静态嵌套类也被称为内部类。嵌套类在
UML中是composite的另外一种代码表示形式,表示耦合度更高,并且与外部类更加紧密。
一般类的访问修饰符可以定义为默认的internal或者public,而内嵌类就有比较多的选择,
嵌套类分为静态嵌套类和非静态嵌套类,其中非静态嵌套类也被称为内部类。嵌套类在
UML中是composite的另外一种代码表示形式,表示耦合度更高,并且与外部类更加紧密。
一般类的访问修饰符可以定义为默认的internal或者public,而内嵌类就有比较多的选择,
可以是为protected、internal、public以及默认的private。
内嵌类与外部类的访问限制
嵌套类可以访问外部类的方法、属性、字段而不管访问修饰符的限制。如:
public class A {
private static int _AInt;
private int _instanceInt;
private static void AMethod() {
Console.WriteLine(_AInt);
}
public void SayIt() {
NestedA.Method(this);
}
private class NestedA{
public static void Method(A a) {
//静态成员
_AInt = 100;
AMethod();
//实例成员
a._instanceInt = 10;
a.SayIt();
}
}
}
但是外部类只能够访问修饰符为public、internal
嵌套类的字段、方法、属性。示例如下:
public class A { public static void AMethod() { //成功 NestedA.StaticMethod(); //编译报错 NestedA._Int = 100; NestedA ins=new NestedA(); //成功 ins.Method(); //编译报错 ins._instanceInt = 100; } private class NestedA { private static int _Int; private int _instanceInt; public static void StaticMethod() { } public void Method(){} } }