美文网首页
内部类和静态内部类的区别

内部类和静态内部类的区别

作者: 洛的俠 | 来源:发表于2019-07-29 10:02 被阅读0次

内部类:
1、内部类中的变量和方法不能声明为静态的。
2、内部类实例化:B是A的内部类,实例化B:A.B b = new A().new B()。
3、内部类可以引用外部类的静态或者非静态属性及方法。
静态内部类:
1、静态内部类属性和方法可以声明为静态的或者非静态的。
2、实例化静态内部类:B是A的静态内部类,A.B b = new A.B()。
3、静态内部类只能引用外部类的静态的属性及方法。

inner classes——内部类
static nested classes——静态嵌套类

其实人家不叫静态内部类,只是叫习惯了,从字面就很容易理解了。
内部类依靠外部类的存在为前提,而静态嵌套类则可以完全独立,明白了这点就很好理解了。
非静态内部类中的变量和方法不能声明为静态的原因
静态类型的属性和方法,在类加载的时候就会存在于内存中。使用某个类的静态属性和方法,那么这个类必须要加载到虚拟机中。但是非静态内部类并不随外部类一起加载,只有在实例化外部类之后才会加载。
我们设想一个场景:在外部类并没有实例化,内部类还没有加载的时候如果调用内部类的静态成员或方法,内部类还没有加载,却试图在内存中创建该内部类的静态成员,就会产生冲突。所以非静态内部类不能有静态成员变量或静态方法。

相关文章

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • 静态内部类与非静态内部类

    静态内部类与非静态内部类的区别 1、非静态内部类不能声明静态成员变量和静态成员方法,而静态内部类可以声明静态和非静...

  • java-内部类

    内部类与类的属性没有什么区别。静态内部类,非静态内部类在new时有区别。静态内部类类似于外部类的类变量,非静态内部...

  • 类的编译期与运行期

    非静态内部类 非静态内部类到底可以有静态属性吗? static成员变量,或者static final常量 非静态内...

  • 关于静态内部类

    静态内部类与非静态内部类的区别 非静态内部类会隐式持有外部类的引用,可能引起内存泄漏。 静态内部类只能调用外部类的...

  • Java面试题—内部类和静态内部类的区别

    内部类和静态内部类的区别 内部类: 1、内部类中的变量和方法不能声明为静态的。2、内部类实例化:B是A的内部类,实...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • 关于Android的内存泄漏

    关于Android的内存泄漏 知识补充: <1.静态内部类和外部类生命周期区别: 生命周期:静态内部类随着外部类的...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

网友评论

      本文标题:内部类和静态内部类的区别

      本文链接:https://www.haomeiwen.com/subject/nayvrctx.html