1.内部类 内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称
为外部类。
作用:
1) 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该
类
2) 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3) 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
2.静态内部类
细节:
1) 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2) 外部类的静态成员与内部类的成员名称相同,通过“类名.静态成员”访问外部类的静态成员;
3) 外部类的静态成员与内部类的成员名称不相同,直接成员名调用
4) 创建静态内部类的对象时,不需要外部类的对象,可以直接创建: 内部类 对名= new 内部类();
代码演示:
//外部类
public class JingTaiNeiBuLei {
private int a = 66; //外部类封装变量
static int b = 3; //外部类静态变量
static int c = 4;
/********************************************************************************/
//内部类
public static class XInner{
int b = 2; //内部类的变量
//内部类方法
public void print() {
//外部类的静态成员与内部类的成员名称相同,通过“类名.静态成员”访问外部类的静态成员;
System.out.println("外部类静态变量" + JingTaiNeiBuLei.b);
System.out.println("内部类变量" + b);
//外部类的静态成员与内部类的成员名称不相同,直接成员名调用
System.out.println("外部静态变量" + c);
// 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
System.out.println("外部类非静态变量" + new JingTaiNeiBuLei().a);
}
}
/********************************************************************************/
public static void main(String[] args) {
//创建静态内部类的对象时,不需要外部类的对象,可以直接创建 : 内部类 对象名= new 内部类();
XInner work1 = new XInner();
work1.print();
}
}
运行结果:
外部类静态变量3
内部类变量2
外部静态变量4
外部类非静态变量66