Java 什么是静态内部类
#定义
Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。
有static关键字修饰的内部类。
比如:Pattern类中的Node类。
public class Outer {private static String s1 = "this is s1 in Outer";private static String s2 = "this is s2 in Outer";public void method1() {// 外部类可通过内部类的对象调用内部类的私有成员变量或方法System.out.println(new Inner().s1);System.out.println(new Inner().method2());}private static String method2() {return "this is method2 in Outer";}// 内部静态类public static class Inner {private String s1 = "this is s1 in Inner";private static String s3 = "this is s3 in Inner";public void method1() {// 内部类可直接访问外部类的私有静态成员变量或方法System.out.println(s2);// 内部类和外部类有同名变量和方法时System.out.println(s1);System.out.println(Outer.s1);System.out.println(method2());System.out.println(Outer.method2());}private String method2() {return "this is method2 in Inner";}}
}
------外部类测试-------- this is s1 in Inner this is method2 in Inner ------内部类测试-------- this is s2 in Outer this is s1 in Inner this is s1 in Outer this is method2 in Inner this is method2 in Outer
1、创建静态内部类方式:Outer.Inner inner = new Outer.Inner();静态内部类不依赖于外部类。
2、外部类可通过内部类的对象调用内部类的私有成员变量或方法。
3、静态内部类访问的外部类成员变量或方法为什么不能是非静态的,而成员内部类可以?
成员内部类中有外部类的引用,所以成员内部类对外部类的私有非静态变量和方法可以随意访问。
从静态内部类它不存在对外部类的引用,所以仅能访问外部类的静态成员变量或方法。
4、静态内部类中可定义静态的成员变量和方法。
#总结
1、创建静态内部类方式:Outer.Inner inner = new Outer.Inner();静态内部类不依赖于外部类。
2、外部类可通过内部类的对象调用内部类的私有成员变量或方法。
3、静态内部类访问外部类的静态成员变量或方法必须是静态的。
4、静态内部类中可定义静态的成员变量和方法。
5、外部类可以创建静态内部类的实例,即使是私有的;并可通过内部类的实例访问内部类的成员变量和方法,即使是私有的。
#静态内部类的作用
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。
3)普通内部类把它理解为与外部类绑定了,创建普通内部类对象一定要通过外部类的对象new才行。而静态内部类是不需要的
#参考
https://www.cnblogs.com/SQP51312/p/6102620.html
https://zhidao.baidu.com/question/149873207.html
转载于:https://www.cnblogs.com/baxianhua/p/11547782.html
Java 什么是静态内部类相关推荐
- jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...
利用静态内部类为您的代码添加辅助功能 作者 john d. mitchell 摘要这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的.可选的辅助功能,例如测试和示例代码等.( 500 字) ...
- java建造者模式静态内部类,静态内部类的使用方式
静态内部类的两种使用方式 1.什么是静态内部类? 2.静态内部类在生成单例模式中的应用: 为什么要使用静态内部类生成单例对象? 1.在类加载器加载过程中只加载一次,加载的时候生成对象,这利用了天然的类 ...
- java内部类和静态内部类的区别
1 相同点 使用的时候,import的时候,除了包名,还要带外部类. 2 不同点 2.1 对象创建的方式不同 静态内部类创建对象的时候,独立于外部类及其对象,就好像它是一个独立的类,可以和外部类一样使 ...
- java学习之静态内部类
/*静态内部类* 在类内部定义一个静态内部类* 静态的含义是该内部类可以向其他静态成员一样,不用依赖与外部类的对象.可以直接使用* 因此该类只能访问外部类的静态成员* * * * */class A2 ...
- Java内部类与静态内部类
http://hi.baidu.com/zhumulangma/item/bcd478c140427b2cef466532 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明pub ...
- Java案例:静态内部类
有些时候,使用内部类只是为了把一个类隐藏在另外一个类的内部,而且并不需要这个内部类引用外围类对象,此时可以将内部类声明为static,以便取消产生的引用.下面是一个使用静态内部类的经典例子.考虑一下计 ...
- java 内部类和静态内部类的区别
private class InnerClass { // 只有在静态内部类中才能够声明或定义静态成员 // private static String tt = &q ...
- Java内部类介绍 - 静态内部类和成员内部类
文章目录 内部类 内部类概述 静态内部类 成员内部类 内部类 内部类概述 内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主). // 外部的People类可以理解成宿 ...
- 浅谈 Java中的静态内部类、匿名内部类、成员式内部类和局部内部类
内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...
最新文章
- C语言竟成TIOBE年度编程语言候选!苹果iPhone 7卖得最好!
- SpringBootH ttpInvoker接口调用
- LeetCode算法题2:求字符串b在字符串a中的起始下标
- 使用wireshark分析tcp/ip报文之报文头
- IE6 / IE7 / Firefox 的margin问题解决办法
- php中时间轴,PHP时间轴函数
- MongoDB实战指南(二):索引与查询优化
- Protocol Buffer 序列化
- 知识图谱最新权威综述论文解读:知识表示学习部分
- python装饰器 property_介绍Python的@property装饰器的用法
- Flink之Watermark滑动窗口案例
- 新增标签 html知识,互联网常识:html5有哪些新增标签
- EM310指令集及使用
- allegro 尺寸标注操作未到板边的处理
- python 生成word目录
- android+背景虚化,android背景虚化
- nodejs开发环境安装-连载【1】-企业级系统开发实战连载系列 -技术栈 :vue、element-ui、qt、c++、sqlite
- JFinal在使用oracle数据库时页面显示EL表达式获取不到值
- 西部数据移动硬盘设置密码教程
- 乘2取整法_十进制小数转二进制小数乘2取整法的直观理解
热门文章
- 计算机在线应用分为,在线计算器的分类和使用方法
- linux安装完mysql后如何初始化,linux yum安装mysql后要注意的一些初始化问题linux服务器应用 -电脑资料...
- java 线程间通信方式_「转」JAVA多线程之线程间的通信方式
- OpenStack-Icehouse(nova-network)多节点基础环境部署
- 无法通过ip地址连接其它电脑的数据库,但是又可以ping通,错的不是配置,而是差了一个步骤
- redis入门基础知识(一)
- web python template injection_XCTF Web_python_template_injection
- QUIC/UDT/SRT
- 关于 Openresty 的两三事
- php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数