Java静态内部类
2021/5/31 20:21:00
本文主要是介绍Java静态内部类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、静态内部类
如果一个类要被声明为static的,只有一种情况,就是静态内部类。
静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。静态方法中也不能使用关键字this。
二、静态类的特点
1.全局唯一,任何一次的修改都是全局性的影响
2.只加载一次,优先于非静态
3.使用方式上不依赖于实例对象。
4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。
三、静态类和非静态类之间的区别
1.内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用
2.非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员
3.一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面
public class OutClass { /** * 全局静态变量 */ private static final String msg = "i love java"; // 创建静态类 public static class staticInnerClass{ public void showMsg() { System.out.println("静态内部类展示信息:"+msg); } } // 创建非静态内部类 public class InnerClass{ public void disPlayMsg() { System.out.println("非静态内部类展示信息:"+msg); } } public static void main(String[] args) { // 创建静态内部类实例 staticInnerClass sic = new OutClass.staticInnerClass(); sic.showMsg(); // 创建非静态内部类实例,需要先创建外部类的实例 OutClass().new InnerClass ic = new OutClass().new InnerClass(); ic.disPlayMsg(); } }
这篇关于Java静态内部类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?