嵌套类
类也可以声明在其他的类中,这称为嵌套类。
(不能在函数内再声明类,不存在局部类)
public class 弓箭手
{
public int hp;
public 弓箭 武器;
public 护甲 防具;
public class 弓箭
{
public int atk;
}
}
public class 护甲
{
public int def;
}
声明为嵌套类,通常意味着只有这个类会使用他。
例如,火枪手和骑士都会装备护甲,但除了弓箭手不会再有人使用弓箭了。
外部使用嵌套类
嵌套类也是类成员,默认访问权限为private。要想让外部访问首先要更改访问权限。
然后,使用嵌套类需要把他的声明类写全。
弓箭手.弓箭 a = new 弓箭手.弓箭();
声明类不是命名空间,无法通过引用命名空间的方式来省略此步骤。
嵌套类对声明类的访问权限
嵌套类作为声明类的成员,也具有声明类完全的访问权限。即便是private成员。
public class 弓箭手
{
private int hp;
private 弓箭 武器;
private 护甲 防具;
public class 弓箭
{
public int atk;
public void 治疗祝福(弓箭手 主人)
{
主人.hp += 10;
主人.武器.atk -= 2;
}
}
}
但只能访问直属的声明类,因为成员的所属类只能有一个。
此外,声明类也不能直接访问嵌套类的成员。
因为只有嵌套类本身是他的成员,他可以访问private的嵌套类。
但嵌套类的成员不是声明类的成员,和声明类没有关系。
(我附庸的附庸不是我的附庸)