Java 内部类
来源:互联网 发布:美拍视频怎么上传淘宝 编辑:程序博客网 时间:2024/04/30 11:29
思考一个问题:为什么要使用内部类?!
什么是内部类?!
——内部类是指在一个外部类的内部再定义一个类。一旦编译成功,就会生成两个.class文件:outer.class和outer$inner.class,因此,所以内部类的成员变量/方法名可以和外部类的相同。
内部类分为四种:静态内部类、成员内部类、局部内部类、匿名内部类
一. 静态内部类
用static 修饰的内部类,可以直接访问外部类的静态成员变量和静态方法。
在外部类的方法(不管是静态的还是非静态的)里可以写 Inner inner = new Inner();
二. 成员内部类
可以直接访问外部类的所有方法和变量。
成员内部类里不能有static的方法和变量,在外部类的方法(只能是非静态的)里可以写 Inner inner = new Inner()。注意:成员内部类需要先创建了外部类,才能创建它自己的;这个内部类需要外部内实例化后才可以使用,而静态方法是不需要实例化就可以使用的,因此在外部类的静态方法里是不能写Inner inner = new Inner()
Java编译器在创建内部类对象时,隐式的把其外部类对象的引用也传了进去并一直保存着。这样就使得内部类对象始终可以访问其外部类对象,同时这也是为什么在外部类作用范围之外向要创建内部类对象必须先创建其外部类对象的原因。
写到这里,说下静态内部类和成员内部类的本质区别:静态内部类没有指向外部的引用;在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。
三. 局部内部类
可以定义在一个方法甚至一个代码块之内,如果我们在用一个内部类的时候仅需要创建它的一个对象给外部使用。
不能超出方法或代码块去创建局部内部类的对象,因为这会超出它的作用域。
四 匿名内部类
Java中,如果你自己没有显示的写出一个构造函数,那么在你创建该类的对象的时候,编译器会自动为你创建并调用缺省的构造函数。但是只要你自己写出了带参的构造函数,那么,那个原本可以由编译器自动创建的无参构造函数就永远的消失了。要用?那你得自己再显示的写一个无参构造函数!
- 【Java】【内部类】Java 内部类简介
- [Java] Java 内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- java的内部类、匿名内部类、局部内部类
- java内部类之成员内部类、静态内部类
- java 成员内部类 局部内部类,匿名内部类
- Java 静态内部类/内部类
- java内部类、静态内部类 小结
- Java内部类,静态内部类
- JAVA 内部类与静态内部类
- java内部类--局部内部类
- Java 内部类以及匿名内部类
- 正则表达式 // 和##和~~
- LeetCode:Container With Most Water
- 找回密码,使用邮件发送方式
- require和require_once的区别
- SSDP
- Java 内部类
- 当几个引用指向同一个java对象的时候,用什么办法能让这几个引用都变成 null?
- LVM 在线扩容
- ios开发 - SWift初学笔记
- hello world
- android 上传头像
- Android中JNI的理解
- 黑马程序员_7K面试题之交通灯
- 网站首页