首页 > 编程笔记 > Java笔记

Java内部类的用法

Java 允许在一个类的内部定义类,这个类称为内部类(Inner Class),包含内部类定义的类称为外部类(Outer Class)。

静态内部类使用 static 修饰。在静态内部类中可以直接访问外部类的静态成员变量或静态成员方法。通过外部类访问静态内部类的静态成员比较简单,语法格式如下:

外部类名.内部类.静态成员方法();
外部类名.内部类.静态变量;

对象内部类是没有使用 static 修饰的内部类。内部类实例可以访问外部类的所有成员变量和成员方法,内部类的对象一定要绑定在外部类的对象上。

当通过外部类访问静态内部类的非静态成员时,需要先新建内部类的对象,再通过“对象名.成员”的方式调用。其语法格式如下:

外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
对象名.成员;


【实例】静态内部类和对象内部类的测试。
class OuterClass {
    private static double PI = 3.14;
    private double r = 1;

    static class SInner {
        static void getPerimeter() {
            // 静态内部类中的方法只能直接访问外部类的静态成员变量和方法
            System.out.println(2 * PI * r);
        }

        void getArea() {
            System.out.println(PI * r * r);
        }
    }
}

class OInner {
    void getPerimeter() {
        System.out.println(2 * PI * r);
    }
}

public class DEMO {
    public static void main(String[] args) {
        // 访问静态内部类的静态方法
        OuterClass.SInner.getPerimeter();

        // 访问静态内部类的非静态方法
        OuterClass.SInner os = new OuterClass().new SInner();
        os.getArea();

        // 访问对象内部类的方法
        OuterClass.OInner oc = new OuterClass().new OInner();
        oc.getPerimeter();
    }
}
上述代码演示了静态内部类、对象内部类和外部类之间的相互访问。运行结果为:

6.28
3.14
6.28

相关文章