在java中,可以在另一个类中定义一个类,这些类称为嵌套类。它们使您能够对仅在一个地方使用的类进行逻辑分组,从而增加封装的使用,并创建更具可读性和可维护性的代码。
句法:
class OuterClass { ... class NestedClass { ... } }
与类方法和变量一样,静态嵌套类与其外部类相关联。像静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法:它只能通过对象引用来使用它们。
他们使用封闭的类名访问。
OuterClass.StaticNestedClass
例如,要为静态嵌套类创建对象,请使用以下语法:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// Java program to demonstrate accessing // a static nested class // outer class class OuterClass { // static member static int outer_x = 10; // instance(non-static) member int outer_y = 20; // private member private static int outer_private = 30; // static nested class static class StaticNestedClass { void display() { // can access static member of outer class System.out.println("outer_x = " + outer_x); // can access display private static member of outer class System.out.println("outer_private = " + outer_private); // The following statement will give compilation error // as static nested class cannot directly access non-static membera // System.out.println("outer_y = " + outer_y); } } } // Driver class public class StaticNestedClassDemo { public static void main(String[] args) { // accessing a static nested class OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); nestedObject.display(); } }
输出:
outer_x = 10 outer_private = 30
要实例化一个内部类,你必须首先实例化外部类。然后,使用以下语法在外部对象内创建内部对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
有两种特殊的内部类:
// Java program to demonstrate accessing // a inner class // outer class class OuterClass { // static member static int outer_x = 10; // instance(non-static) member int outer_y = 20; // private member private int outer_private = 30; // inner class class InnerClass { void display() { // can access static member of outer class System.out.println("outer_x = " + outer_x); // can also access non-static member of outer class System.out.println("outer_y = " + outer_y); // can also access private member of outer class System.out.println("outer_private = " + outer_private); } } } // Driver class public class InnerClassDemo { public static void main(String[] args) { // accessing an inner class OuterClass outerObject = new OuterClass(); OuterClass.InnerClass innerObject = outerObject.new InnerClass(); innerObject.display(); } }
输出:
outer_x = 10 outer_y = 20 outer_private = 30
原文:https://www.cnblogs.com/breakyizhan/p/13281435.html