`
kgdso
  • 浏览: 89538 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java静态内部类(转载)

阅读更多

如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着: 
1. 要创建嵌套类的对象,并不需要其外围类的对象。 
2. 不能从嵌套类的对象中访问非静态的外围类对象。 
  
public class Outer { 
       private static int i = 1; 
       private int j = 10; 
       public static void outer_f1() { 
       } 
  
       public void outer_f2() { 
       } 
  
       // 静态内部类可以用public,protected,private修饰 
       // 静态内部类中可以定义静态或者非静态的成员 
       static class Inner { 
              static int inner_i = 100; 
              int inner_j = 200; 
              static void inner_f1() { 
                      //静态内部类只能访问外部类的静态成员(包括静态变量和静态方法) 
                     System.out.println("Outer.i" + i); 
                     outer_f1(); 
              } 
  
              void inner_f2() { 
                     // 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)  
                     // System.out.println("Outer.i"+j); 
                     // outer_f2(); 
              } 
       } 
  
       public void outer_f3() {       // 外部类访问内部类的静态成员:内部类.静态成员 
              System.out.println(Inner.inner_i); 
              Inner.inner_f1(); 
              // 外部类访问内部类的非静态成员:实例化内部类即可 
              Inner inner = new Inner(); 
              inner.inner_f2(); 
       } 
  
       public static void main(String[] args) { 
              newOuter().outer_f3(); 
       } 

生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类(正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lu7kang/archive/2010/04/16/5491241.aspx

分享到:
评论

相关推荐

    (转载)文思创新 java开发工程师笔试题.doc

    因此,两个有效的内部类声明是:非静态内部类和静态内部类。 这些题目涵盖了Java编程的基础知识,包括循环控制、线程启动、访问控制和内部类。对于Java开发工程师来说,理解这些概念是非常重要的,它们是编写高效...

    java编写建议(转载)

    - 使用静态内部类等技术来实现高效的单例模式。 通过遵循以上建议,开发者可以在编写Java代码时,不仅能够写出高质量、高效率的代码,还能够更好地遵循软件工程的最佳实践,从而提高软件的可靠性和可维护性。

    Java程序员面试的试题集(1_122)帮助初学者的技术问题(转载)

    封装类提供了更多的功能,如包装和拆箱操作、转换为字符串和其他数据类型的操作,以及提供一些静态方法用于数值操作。 #### 异常处理:运行时异常与一般异常 异常是程序执行过程中出现的错误或非预期情况。Java中...

    软件测试基本方法(转载)

    5. SonarQube:静态代码分析工具,帮助找出源码中的潜在问题,包括漏洞、代码异味和复杂度等。 6. Jenkins:持续集成/持续部署工具,可自动化构建、测试和部署流程,确保快速反馈和高质量发布。 四、最佳实践 1. ...

    二十三种设计模式【PDF版】

    经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 Java 思想的核心所在,这些 你都将在 GoF 的设计模式里领略到它们变幻无穷的魔力。 GoF 的设计模式表面上好象也是一种...

Global site tag (gtag.js) - Google Analytics