引言
概念
术语来讲:当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服
务,那么这个内部的完整结构最好使用内部类。在 Java 中,可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。
用博哥的话通俗的来讲:就要相当于一辆火车,火车是有多数个车厢组成的,此时火车就可以理解为外部类,每节车厢可以理解为内部类。
注意:内部类和外部类共用同一个java源文件,但是经过编译之后,内部类会形成单独的字节码文件
1.静态内部类
1.1 定义
被static修饰的定义在一个类里面的了叫做静态内部类。
代码语法如下
class OutClass{
public int data1 = 1;
class static InnerClass{
public int data2 = 1;
//......
}
//......
}
1.2 实例化静态内部类
实例化静态内部类就像调用静态成员变量一样,直接使用类名进行调用,所以内部类实例化就是:
外部类.内部类 内部类引用 = new 外部类.内部类();
public class test1 {
public static void main(String[] args) {
// 1.实例化静态内部类对象
OutClass.InnerClass innerClass = new OutClass.InnerClass();
innerClass.func();
}
}
1.3静态内部类的使用特性
1.3.1 静态内部类访问外部类非静态成员,先实例化外部类对象,使用外部类引用访问外部类成员
class OutClass{
public int data1 = 1;
private int data2 = 2;
public static int data3 = 3;
static class InnerClass{
// 1.这是一个静态内部类
public int data4 = 4;
private int data5 = 5;
public static int data6 = 6;
public void func(){
System.out.println("static-InnerClass::func()");
// 1.1静态内部类访问外部类成员,先实例化外部类对象,使用外部类引用访问外部类非静态成员
// 不能直接访问外部类成员
OutClass outClass = new OutClass();
System.out.println(outClass.data1);
System.out.println(outClass.data2)
}
}
}