`
dxp4598
  • 浏览: 81701 次
  • 来自: 上海
社区版块
存档分类
最新评论

Java static nested class

    博客分类:
  • Java
阅读更多

如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着: 
1. 要创建嵌套类的对象,并不需要其外围类的对象。 
2. 不能从嵌套类的对象中访问非静态的外围类对象。 
  
publicclass Outer { 
       privatestaticinti = 1; 
       privateintj = 10; 
       publicstaticvoidouter_f1() { 
       } 
  
       publicvoidouter_f2() { 
       } 
  
       // 静态内部类可以用public,protected,private修饰 
       // 静态内部类中可以定义静态或者非静态的成员 
       staticclass Inner { 
              staticintinner_i = 100; 
              intinner_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 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)

分享到:
评论
1 楼 terrorknight 2012-10-10  
可以把java collection framework 总结下

相关推荐

    java-嵌套类(inner class)-来自oracle官网

    2.1.static nested class访问enclosing class(outer class)的成员 2.2.enclosing class(outer class)访问static nested class的成员 3.Non-static nested classes(Inner classes) 3.1.Non-Static Inner ...

    JAVA程序员32问

    Java 面试题 经典 第一,谈谈final, finally, finalize的区别。...第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。

    Java程序员面试陷阱大全.doc

    Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)  Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用...

    java笔试题,java程序员常见的笔试

    3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner ...

    java编程常见面试题目

    第一,谈谈final, ...第三,Static Nested Class 和 Inner Class的不同,  第四,&和&&的区别。  第五,HashMap和Hashtable的区别。   第六,Collection 和 Collections的区别。

    java面试笔试题大汇总+很全面.txt

    一,谈谈final, finally, finalize的... 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。   第四,&和&&的区别。  这个问得很少。   第五,HashMap和Hashtable的区别。

    Java面试经典试题及答案.doc

    Java面试经典试题及答案 第一,谈谈final, finally, finalize的区别。...第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 ..................

    java程序员必知的

    第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。  Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类...

    java基础知识

    3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner ...

    变态JAVA程序员面试32问

    第三,StaticNestedClass和 InnerClass 的不同,说得越多越好(面试题有的很笼统) 。 第四,&和&&的区别。 第五,HashMap 和 Hashtable 的区别。 第六,Collection和 Collections的区别。 第七,什么时候用assert....

    java_ms.rar_Math Class_java collection

    第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。  第四,&和&&的区别。 这个问得很少。   第五,HashMap和Hashtable的区别。  常问。   第六,Collection 和 ...

    java整理试题

    第一,谈谈final, finally, finalize的区别。...第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 这个问得很少。 第五,HashMap和Hashtable的区别。

    java面试题大全-基础方面

    3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner ...

    关于java可能遇到的面试题

    final—修饰符 Anonymous Inner Class Static Nested Class 和 Inner Class的不同

    java面试宝典

    3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++ 嵌套类最大的不同就在于 是否有指向外部的引用上。注: 静态内部类...

    Java面试32问

    第三,static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。 第六,Collection 和 Collections的区别。 第七,什么...

    java 语言中常见易错知识点

    3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner ...

    JAVA程序员面试32问,你能回答多少题

    谈谈final, finally, finalize的区别 Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)

    JAVA程序员面试时32个问题

    JAVA程序员面试的32个问题:final, finally, finalize的区别,Static Nested Class 和 Inner Class的不同,说得越多越好...

Global site tag (gtag.js) - Google Analytics