内部类:
将一个类定义在另一个类里面。对里面那个类就称为内部类。(内置类,嵌套类)
访问特点:
内部类可以直接访问外部类中的成员。
外部类要访问内部类中的成员必须创建内部类的对象。
为什么要定义内部类呢?
类是用于描述事物的,而事物中如果还有具体的事物,而且这个内部的事物在访问着所属事物中的内容。
这个时候这个内部的事物,也需要用到类来描述,这个类就是内部类。
为什么内部类可以直接访问外部类中的成员呢?
因为内部类都持有一个外部类的引用。外部类名。this
内部类的修饰符:
当内部类定义在外部类的成员位置上时,可以使用成员的修饰符来进行内部类的修饰。
一。权限修饰符: 1,默认的:直接在其他类中,访问一个类的内部类。
格式 new 外部类名().new 内部类名().内部类的方法();
可以写成:外部类名.内部类名 变量名 = new 外部类对象.new 内部类对象;
内部类必须有所属。
2,公有的:和默认的一样。
3,私有的:是不可以直接在外部访问的。
二.static修饰符
内部类一旦加了静态,出现访问局限性,只能访问外部类中的静态成员。
内部类被静态后,会随着外部类的加载而加载。
类什么时候用,什么时候进内存。
访问出现了局限性。
访问静态内部类中的非静态成员。
直接new内部类的对象,
外部类名.内部类名 变量名 = new 外部类名.内部类名();
访问静态内部类中的静态成员:不需要对象。
外部类名.内部类名.内部类里面的静态方法();
如果内部类中定义了静态成员,该内部类必须被静态修饰,否则编译失败。
记住:只有内部类定义在外部类的成员位置上,才具备这些修饰符。
内部类也可以定义在外部类中的局部位置上。(不能被静态修饰,局部位置上不能定义静态)
1,可以访问外部类的成员变量,
2,局部的不可以访问,
内部类定义在局部位置上,不允许访问局部中的变量。只能访问被fianl修饰的局部常量。 |