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

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程序员32问

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

    深入浅析Java中Static Class及静态内部类和非静态内部类的不同

    Java中的静态内部类(Static Class),也称为嵌套静态类,是Java语言提供的一种独特机制,它允许我们在一个外部类内部定义一个静态的类。这种类的声明前面带有`static`关键字,与普通的内部类(非静态内部类)有所...

    Java中的Static class详解及实例代码

    Java中的Static class详解及实例代码 Java中的Static class是指在Java中可以使用的静态实例变量、静态方法、静态块,还可以有静态类。静态类是指在一个类里面定义的静态内部类,也就是nested class。外部类中的静态...

    JAVA程序员面试32问

    OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass(); ``` 总结起来,Inner Class和Static Nested Class的主要区别在于: 1. **依赖性**:Inner Class实例化需要外部类的实例;而Static ...

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

    在上面的例子中,`StaticNestedClass`可以直接访问`OuterClass`的静态成员`str_2`,并通过持有`OuterClass`的实例引用`outer`来访问实例成员`str_1`及实例方法`print_instance()`。 #### 三、非静态嵌套类(内部类...

    JAVA程序员面试32问.

    本文将详细解释JAVA程序员面试中的32个问题,涵盖final、finally、finalize的区别、Anonymous Inner Class、Static Nested Class、HashMap和Hashtable的区别、Collection和Collections的区别、断言的使用、GC的概念...

    java易混淆概念Anonymous Inner Class

    Java编程语言中存在一些易混淆的概念,今天我们将探讨 Anonymous Inner Class、final、finally、finalize 的区别,Static Nested Class 和 Inner Class 的不同,&和&&的区别,HashMap 和 Hashtable 的区别,...

    Java内部类(innerclass).docx

    OuterClass.StaticNestedClass nestedObj = new OuterClass.StaticNestedClass(); ``` ##### 2.2 内部类 - **定义**:未被`static`关键字修饰的类被称为内部类。 - **特点**: - 必须依赖于外部类的实例存在...

    java视频 static关键字

    5. **静态内部类(Static Nested Classes)**: `static`修饰的内部类是独立于其外部类的,不需要外部类的实例就能创建。它们类似于顶级类,但仍然保持与外部类的关联。 6. **静态工厂方法(Static Factory ...

    java代码-Nested

    内部类有两种形式:静态内部类(Static Nested Class)和非静态内部类(Non-static Nested Class)。 - **非静态内部类**:非静态内部类需要一个外部类的对象来实例化,它可以直接访问外部类的非静态成员。这种...

    变态JAVA面试32问.docx

    Inner Class 是一个内部类,需要外部类对象来访问,而 Static Nested Class 不需要外部类对象。Inner Class 可以访问外部类对象的成员变量,而 Static Nested Class 不能。 4. &和&&的区别 & 是位运算符,用于...

    2022常见JAVA面试题一.docx

    本文将对 Java 面试题进行详解,涵盖 final、finally、finalize、Anonymous Inner Class、Static Nested Class、Inner Class、& 和&&、HashMap 和 Hashtable、Collection 和 Collections 等知识点。 一...

    Java面试笔试题集

    Java面试笔试题集是Java开发者面试过程中的重要参考资料,本文将对Java中的异常处理机制、垃圾回收机制、Error与Exception的区别、final、finally、finalize的区别、Anonymous Inner Class、static Nested Class与...

    java程序员必知的

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

    java_ms.rar_Math Class_java collection

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

    Java面试题,他会给你很好的Java面试准备,第一,谈谈final, finally, finalize的区别,第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    在Java中,还有Static Nested Class和Inner Class的概念。Static Nested Class意味着创建一个static内部类的对象,不需要一个外部类对象,不能从一个static内部类的一个对象访问一个外部类对象。 在Java面试中,还...

    static 的使用场合

    4. **静态内部类(Static Nested Classes)** - 静态内部类不持有对外部类的引用,因此可以独立于外部类的实例存在。 - 可以直接通过类名访问,无需对外部类实例化。 - 常用于实现单例模式,或者创建与外部类关联...

    SCJP Sun® Certified Programmer for Java™ 6 Study Guide chapter 8

    StaticNestedClass nested = new StaticNestedClass(); nested.display(); } } ``` #### 总结 内部类提供了强大的功能来组织和封装代码。通过理解不同类型的内部类以及如何使用它们,你可以更有效地编写清晰、...

    关于java可能遇到的面试题

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

Global site tag (gtag.js) - Google Analytics