Java内部类
来源:互联网 发布:北航网络教育好毕业吗? 编辑:程序博客网 时间:2024/06/06 08:25
内部类是定义在一个类中的类
- 内部类可对同一个包中的其他类隐藏起来
- 定义一个回调函数且不想编写大量代码时,匿名内部类比较便捷
- 内部类既可以访问自身的数据域和方法,也可以访问创建它的外部类的所有数据域和方法
- 只有内部类可以是私有类(private),而常规类只能是包可见性(默认,什么都没写)或公有可见性(public)
- 只有内部类才能声明为static
成员内部类
- 作为外部类的成员变量,外部类要访问内部类的所有成员变量/方法,需要通过内部类的对象来获取
- 成员内部类不能含有static的变量和方法。因为成员内部类需要先创建了外部类,才能创建它自己
- 在成员内部类要引用外部类对象时,使用
outer.this
来表示外部类对象
局部内部类
- 类定义在方法中,不能用public或private声明,作用域限定在此方法中,外部类的其他代码也无法访问
除了能访问外部类,还能访问此方法的局部变量,不过这些局部变量必须是
final
public void start(int a, final boolean flag){ class Inner { public void action() { System.out.println(flag); } } Inner inner = new Inner(); inner.action(); System.out.println(a);}
匿名内部类
- 只创建这个类的一个对象,不必命名(没有类名)
- 由于构造器的名字和类名相同,而匿名类没有类名,所以匿名类不能有构造器
- 匿名内部类的
this
指的是匿名内部类自身,要获得外部类的引用:outerClass.this
,其中outerClass为外部类的类名
public void start(int interval, final boolean beep){ ActionListener listener = new ActionListener() //类定义直接跟在接口后面 { public void action() { //do something } }; listener.action();}public void execute(){ // an object of an inner class extending Person class Person count = new Person("lala"){...}}
静态内部类
- 只是为了把一个类隐藏在另一个类的内部,不能引用外部类里的对象(只能访问外部类的静态数据域和方法)
生成一个静态内部类不需要外部类
Outer.Inner in = new Outer.Inner();
作为外部类的成员变量,不能放在方法中
0 0
- 【Java】【内部类】Java 内部类简介
- [Java] Java 内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- java的内部类、匿名内部类、局部内部类
- java内部类之成员内部类、静态内部类
- java 成员内部类 局部内部类,匿名内部类
- Java 静态内部类/内部类
- java内部类、静态内部类 小结
- Java内部类,静态内部类
- JAVA 内部类与静态内部类
- java内部类--局部内部类
- Java 内部类以及匿名内部类
- Android 修改VideoView的宽
- Git中全局忽略.DS_Store文件
- 秒杀系统架构分析与实战
- webpack 与gulp 比较
- CentOS下LAMP环境搭建
- Java内部类
- myeclipse部署maven项目到tomcat,src/main/resources里面配置文件部署不到webapp下classes的问题
- 陈硕知乎专栏
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
- JAVA截取字符串
- iOS 自定义柱状图
- 一对一单向关联映射(五)
- [leetCode刷题笔记]503. Next Greater Element II
- 浅谈java中的浅拷贝(浅复制)和深拷贝(深复制)