`

Java静态内部类(嵌套类)

    博客分类:
  • 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 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则) 

 

分享到:
评论

相关推荐

    java静态内部类(嵌套类)

    ### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...

    java和kotlin的内部类静态嵌套类

    总的来说,理解Java和Kotlin的内部类和静态嵌套类是成为一名合格的移动开发者的基础。通过学习和实践,你可以更好地组织代码,提高代码质量,同时降低维护成本。在提供的资源中,"java内部类嵌套类"和"kotlin内部类...

    java 静态内部类的使用规范

    Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...

    Java 深入理解嵌套类和内部类

    在静态嵌套类内部,不能访问外部类的非静态成员变量,这是由 Java 语法中“静态方法不能直接访问非静态成员”所限定。若想访问外部类的变量,必须通过其他方法解决。由於这个原因,静态嵌套类使用很少。 三、非静态...

    浅谈内部类与静态内部类的应用

    静态内部类,又称为静态嵌套类,是内部类的一种特殊形式。与普通成员内部类不同,静态内部类不持有对外部类的引用,因此不能直接访问外部类的非静态成员。静态内部类需要通过外部类名.静态内部类名的方式来创建对象...

    Java中的静态内部类详解及代码示例

    静态内部类只是嵌套在外部类中,因此也被称为嵌套内部类。 静态内部类的优点包括: * 增强了类的封装性 * 提高了代码的可读性 使用静态内部类可以将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。典型的...

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

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

    Java语法总结 - 内部类

    内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。 成员内部类 成员内部类是定义在外部类的成员变量中的一种内部类。它可以访问外部类的所有成员变量和方法,包括私有的变量和方法。成员内部...

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

    ### Java嵌套类详解 #### 一、嵌套类(Nested Class)概述 嵌套类是一种在Java中非常有用的特性,允许开发者在一个类或者接口的内部定义另一个类。这种结构可以增强代码的组织性和封装性。 ##### 1.1 嵌套类的...

    Java内部类总结

    Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...

    有关JAVA的内部类的好东西

    非静态内部类(也称为实例内部类)与外部类的实例紧密关联,而静态内部类则不依赖外部类的实例。 - **局部内部类**:定义在方法、构造器或块中的类,其作用域仅限于该方法、构造器或块。 - **匿名内部类**:没有...

    java内部类的讲解

    ### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...

    Java 接口 内部类

    内部类,也称为嵌套类,可以在类的内部定义,分为静态内部类和非静态内部类(也叫成员内部类)。非静态内部类可以直接访问外部类的私有成员,因为它持有一个隐式的对外部类的引用。静态内部类不持有对外部类的引用,...

    深入理解Java嵌套类和内部类

    Java 嵌套类(nested classes)是指在一个类的内部定义另一个类,这种类有两种类型:静态嵌套类和非静态嵌套类。非静态嵌套类也称为内部类(inner classes)。在Java中,嵌套类从JDK1.1开始引入。 一、什么是嵌套类...

    java内部类1

    Java内部类是Java语言提供的一种独特机制,允许一个类(内部类)嵌套在另一个类(外部类)中。这打破了传统的类与类之间完全独立的关系,使得内部类可以访问外部类的所有成员,包括私有(private)成员,而外部类...

    JAVA_内部类_反射机制

    2. 静态嵌套类:静态嵌套类(也称为静态内部类)与成员内部类相似,但它可以用`static`修饰。这意味着它们不与外部类的实例绑定,可以直接通过类名创建对象。静态嵌套类不能直接访问外部类的非静态成员,但可以通过...

    详解Java 中的嵌套类与内部类

    详解Java中的嵌套类与内部类 Java中的嵌套类与内部类是 Java编程语言中的一种重要概念,它们在Java程序设计中扮演着重要角色。下面我们将详细介绍Java中的嵌套类与内部类。 嵌套类(Nested Class)可以在一个类...

    从Java嵌套类中访问外部类成员.doc

    然而,`T2` 非静态内部类尝试定义一个静态方法 `a()`,这是不允许的,因为静态方法不能在非静态或嵌套类中定义。 总结来说,Java中的嵌套类提供了一种方式来封装和访问外部类的成员,尤其是在处理复杂的数据结构和...

    java中内部类与外部类的学习资料.docx

    - **静态内部类**:同样定义在外部类的成员位置,但可以用static修饰,不依赖外部类的实例。 2. **类访问修饰符**: - 外部类可以是public或默认(包私有)的。 - 内部类可以是public、private、protected或默认...

Global site tag (gtag.js) - Google Analytics