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