快速业务通道

教你使用Java的静态内部类 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

教你使用Java的静态内部类

时间:2011-10-02 高永强

12.3.4  静态内部类

在上一小节我们讨论了内部类,即在一个类中包含有另外一个或者多个类(见本书12.3.3小节)。与 内部类相似,静态内部类指在一个类的内部包含有另外一个或者多个静态类。例如:

public class OuterClass {     ...     static class StaticInnerClass1 {             //内部静态类         //只可以访问OuterClass的静态成员          ...     }                                            //StaticInnerClass结束     ...                                  static class StaticInnerClassN {            // 更多静态内部类        //只可以访问OuterClass的静态成员        ...     }                                           //StaticInnerClassN结束 }  //OuterClass结束

与一般内部类不同,在静态代码中不能够使用this操作,所以在静态内部类中只可以访问外部类的静 态变量和静态方法。使用静态内部类的目的和使用内部类相同。如果一个内部类不依赖于其外部类的实例 变量,或与实例变量无关,则选择应用静态内部类。

如下例子演示怎样使用静态内部类:

///完整程序存在本书配套资源目录Ch12名为StaticInnerClassTest.java public class StaticInnerClassTest {     public static void main( String args[] ) {          OuterClass2 outer = new OuterClass2();         OuterClass2.StaticInnerClass.innerMethod();                                                    //调用静态内部类的静态方法         OuterClass2.outerMethod();         //创建静态内部类对象         OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInnerClass();          int num = staticInner.innerMethod2();   //调用静态内部类实例方法     } } class OuterClass2 {                             //外部类     private double x = 0.0;                     //内部静态类不可以访问 外部类实                                               例变量     static private int n = 10;                  //外部类 静态变量     static void outerMethod() {                 //外部类静态 方法         System.out.println("from OuterClass...");     }     void outerMethod2() {         System.out.println("from OuterClass’ instance method2 ()...");     }     static class StaticInnerClass {             //静 态内部类         static private int m = 5;               //静态内部类静 态变量         static void innerMethod() {             //静态内部类静态 方法             int sum;             n = 20;                              //只可以访问外部类静态变量             sum = n + m;             System.out.println("from InnerClass sum = " + sum);             outerMethod();                      //只可以调用外部类静态 方法        }         int innerMethod2() {             n = 100;             outerMethod();             System.out.println("from InnerMethod2() n = " + n);             return n;         }    }        //静态内部类结束 }           //外部类结束

教你使用Java的静态内部类(2)

时间:2011-10-02 高永强

如同不用创建对象就可调用静态方法一样,上例静态内部类中的静态方法利用:

OuterClass2.StaticInnerClass.innerMethod(); //静态内部类调用其静态方法

来调用。注意,可以在静态内部类的方法中,直接访问外部类的静态变量n和调用静态方法 outerMethod()。但不允许访问外部类的实例变量x以及实例方法outerMethod2()。

静态内部类中也可以提供实例方法,如:

static class StaticInnerClass {         int innerMethod2() {              n = 100;                        //只可访问外部类静态变量             outerMethod();                  //只可调用外部类 静态方法             System.out.println("from InnerMethod2() n = " + n);              return n;         }     }       //静态内部类结束

静态内部类的实例方法中亦只允许访问外部类的静态成员。

可以使用下列语法格式创建一个静态内部类对象并且调用其实例方法,以及静态方法:

OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInner Class();                                  //创建静态内部类对象 int num = staticInner.innerMethod2();       //调用实例方法 staticInner.innerMethod();                   //调用其静态方法

出处: http://yqgao.blog.51cto.com/773490/165373

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号