第六章 内部类
来源:互联网 发布:ad10电路设计软件 编辑:程序博客网 时间:2024/06/05 18:39
内部类就是在一个类的内部在创建一个类。内部类的好处
1. 内部类的对象能够访问它的对象的所有方法和属性,包括私有数据。
2. 匿名内部类可以很方便的定义回调。
3. 内部类可以很方便的编写事件驱动的程序。
7.1 使用内部创建对象
public class school{ public void setStudentCourse(String [] courses){ new Course(courses) } private class Course{ private Stringp[] course; public course(String [] course ){ this.course =course; getInfo(); } void getInfo(){ } }}
7.2 局部内部类
局部内部类就是在某个类的方法中定义一个内部类,作用范围在这个方法体内,与局部变量一样,不加修饰符。
1. 局部访问变量必须加final修饰,因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。
所以,堆内存还是用该变量,而改变量已经没有了。
为了让该值还存在,就加final修饰。
通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。
public class school{ public void setStudentCourse(String [] courses){ final class Course{ private Stringp[] course; public course(String [] course ){ this.course =course; getInfo(); } void getInfo(){ } new Course(courses) } }}
7.3 静态内部类
当一个内部类不需要引用他的外部类的方法、属性值时,可以将类设置为static,这就算是静态内部类。单例的时候可以考虑使用静态内部类。
7.4 匿名内部类
匿名内部类是一种特殊的局部内部类,用来继承一个类或者实现一个接口。
interface Person { public abstract void study(); } class PersonDemo { public void method(Person p) { p.study(); } } class PersonTest { public static void main(String[] args) { PersonDemo pd = new PersonDemo(); pd.method(new Person() { public void study() { System.out.println("好好学习,天天向上"); } }); } } //看下面 interface Inter { void show(); } class Outer { //补齐代码 public static Inter method() { return new Inter() { public void show() { System.out.println("HelloWorld"); } }; } } class OuterDemo { public static void main(String[] args) { Outer.method().show(); //"HelloWorld" } }
阅读全文
0 0
- 第六章 内部类
- 第六天-Java内部类
- java学习笔记---第六章接口与内部类
- 《Java核心技术》复习笔记 - 第六章 接口与内部类
- java核心技术第六章——接口和内部类
- [core java学习笔记][第六章接口与内部类]
- 第六章 内部类和异常类 编程题
- java 学习 内部类 第六天
- 《Java核心技术(卷一)》读书笔记——第六章:内部类
- Core Java Volume I 读书笔记---第六章 接口与内部类
- #Java 核心技术卷一阅读笔记# 第六章 接口、lambda表达式与内部类
- 第十章:内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 第十章 内部类
- 机器学习终极总结——k邻近法(不断更新)
- VB.NET版机房收费系统之七层登录
- linux解决端口占用
- Android轮子
- js基本数据类型
- 第六章 内部类
- VS2015 ASP.NET连接Mysql方法
- Java 8 – 日期和时间实用技巧
- TASKCTL使用插件获取WebService天气信息
- struct的申明,声明为指针与变量的区别
- 实现一个《 从下位机到蓝牙模块通讯到Android客户端 》的完整物联网项目。
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- rabbitMQ
- JS面向对象