#定义

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 什么是静态内部类相关推荐

  1. jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...

    利用静态内部类为您的代码添加辅助功能 作者 john d. mitchell 摘要这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的.可选的辅助功能,例如测试和示例代码等.( 500 字) ...

  2. java建造者模式静态内部类,静态内部类的使用方式

    静态内部类的两种使用方式 1.什么是静态内部类? 2.静态内部类在生成单例模式中的应用: 为什么要使用静态内部类生成单例对象? 1.在类加载器加载过程中只加载一次,加载的时候生成对象,这利用了天然的类 ...

  3. java内部类和静态内部类的区别

    1 相同点 使用的时候,import的时候,除了包名,还要带外部类. 2 不同点 2.1 对象创建的方式不同 静态内部类创建对象的时候,独立于外部类及其对象,就好像它是一个独立的类,可以和外部类一样使 ...

  4. java学习之静态内部类

    /*静态内部类* 在类内部定义一个静态内部类* 静态的含义是该内部类可以向其他静态成员一样,不用依赖与外部类的对象.可以直接使用* 因此该类只能访问外部类的静态成员* * * * */class A2 ...

  5. Java内部类与静态内部类

    http://hi.baidu.com/zhumulangma/item/bcd478c140427b2cef466532 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明pub ...

  6. Java案例:静态内部类

    有些时候,使用内部类只是为了把一个类隐藏在另外一个类的内部,而且并不需要这个内部类引用外围类对象,此时可以将内部类声明为static,以便取消产生的引用.下面是一个使用静态内部类的经典例子.考虑一下计 ...

  7. java 内部类和静态内部类的区别

    private class InnerClass {         // 只有在静态内部类中才能够声明或定义静态成员         // private static String tt = &q ...

  8. Java内部类介绍 - 静态内部类和成员内部类

    文章目录 内部类 内部类概述 静态内部类 成员内部类 内部类 内部类概述 内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主). // 外部的People类可以理解成宿 ...

  9. 浅谈 Java中的静态内部类、匿名内部类、成员式内部类和局部内部类

    内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...

最新文章

  1. C语言竟成TIOBE年度编程语言候选!苹果iPhone 7卖得最好!
  2. SpringBootH ttpInvoker接口调用
  3. LeetCode算法题2:求字符串b在字符串a中的起始下标
  4. 使用wireshark分析tcp/ip报文之报文头
  5. IE6 / IE7 / Firefox 的margin问题解决办法
  6. php中时间轴,PHP时间轴函数
  7. MongoDB实战指南(二):索引与查询优化
  8. Protocol Buffer 序列化
  9. 知识图谱最新权威综述论文解读:知识表示学习部分
  10. python装饰器 property_介绍Python的@property装饰器的用法
  11. Flink之Watermark滑动窗口案例
  12. 新增标签 html知识,互联网常识:html5有哪些新增标签
  13. EM310指令集及使用
  14. allegro 尺寸标注操作未到板边的处理
  15. python 生成word目录
  16. android+背景虚化,android背景虚化
  17. nodejs开发环境安装-连载【1】-企业级系统开发实战连载系列 -技术栈 :vue、element-ui、qt、c++、sqlite
  18. JFinal在使用oracle数据库时页面显示EL表达式获取不到值
  19. 西部数据移动硬盘设置密码教程
  20. 乘2取整法_十进制小数转二进制小数乘2取整法的直观理解

热门文章

  1. 计算机在线应用分为,在线计算器的分类和使用方法
  2. linux安装完mysql后如何初始化,linux yum安装mysql后要注意的一些初始化问题linux服务器应用 -电脑资料...
  3. java 线程间通信方式_「转」JAVA多线程之线程间的通信方式
  4. OpenStack-Icehouse(nova-network)多节点基础环境部署
  5. 无法通过ip地址连接其它电脑的数据库,但是又可以ping通,错的不是配置,而是差了一个步骤
  6. redis入门基础知识(一)
  7. web python template injection_XCTF Web_python_template_injection
  8. QUIC/UDT/SRT
  9. 关于 Openresty 的两三事
  10. php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数