一、什么是嵌套类
定义在一个类内部的类被称为「嵌套类」,嵌套类分为两种:static声明和非static声明的。非static声明的嵌套类又有一个专门的名字叫做「内部类」(Inner Class)。相对的,内部定义了类的类就被称为「外部类」。
1、嵌套类有种类
- 静态嵌套类(Static nested Class):使用static声明的嵌套类称为静态嵌套类,我们直接称为「嵌套类」(Nested Class)。
- 非静态嵌套类(Non-Static nested Class):非static声明的嵌套类是非静态嵌套类,我们称其为「内部类」(Inner Class)。Inner类又分为3种:
- 在一个类中直接定义的内部类
- 在一个方法中定义的内部类
- 匿名内部类
嵌套类、静态嵌套类和非静态嵌套类的关系:
2、定义嵌套类和内部类的语法
class OuterClass{
//code
static class StaticNestedClass{
//code
}
class InnerClass{
//code
}
}
静态嵌套类和非静态嵌套类被统为嵌套类,有时候也将静态嵌套类直接称为嵌套类,将非静态嵌套类直接称为内部类。
二、静态嵌套类
1、嵌套类概述
static修饰符使得嵌套类对象称为外部类的静态成员,与外部类直接关联,可以使用外部类名.静态嵌套类名
直接访问自身。
实例1:静态欠嵌套类的使用
使用静态嵌套类对象访问外部类的实例变量和实例方法
//定义一个公共的OuterClss类
public class OuterClass{
private final String name;
public static void main(String[] args) {
String name = "java";
//实例化外部类
OuterClass outerObject = new OuterClass(name);
//实例化静态嵌套类
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(name);
System.out.println(outerObject.getName());
System.out.println(nestedObject.getName());
}
//定义一个OuterClass类的构造方法</