嵌套类(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(){}
}
}