黑马程序员技术交流社区
标题:
笔记笔记笔记
[打印本页]
作者:
Honne
时间:
2019-8-14 15:33
标题:
笔记笔记笔记
------------------------内部类
如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类
分类
1.成员内部类
格式:
修饰符 class 外部类名称 {
修饰符 class 内部类名称 {
}
}
注意事项:
内部类使用外部类,可以随意访问
外部类使用内部类,需要内部类对象
如何使用成员内部类
间接访问:在外部类的方法当中,使用内部类对象,然后main只是调用外部类的方法
直接访问:
公式:
外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
内部类方法当中访问内部类的局部变量sout(num)
内部类方法当中访问内部类的成员变量sout(this.num)
内部类方法当中访问外部类的成员变量sout(外部类名.this.num)
2.局部内部类(包含匿名内部类)
如果一个类是定义在一个方法内部的,那么这就是一个局部内部类
“局部“ 只有当前所属的方法才能使用它,出了这个方法外面就不能使用了
定义格式:
修饰符 class 外部类名称 {
修饰符 返回值类型 外部类方法名称(参数列表) {
class 局部内部类名称 {
//
}
}
}
注意事项:
定义一个类的时候,权限修饰符的使用规则
1.外部类 public / (default)
2.成员内部类 public / protected / (default) / private
3.局部内部类 什么都不能写
局部内部类: 如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final的】
备注:只要局部变量事实不变,final关键字可以省略
匿名内部类
格式:
接口名称(或类名) 对象名 = new接口名称(或类名) () {
// 覆盖重写所有抽象方法
};
对格式进行解析
1.new代表创建对象的动作
2.接口名称就是匿名内部类需要实现哪个接口
3.{...}才是匿名内部类的内容
注意
1.匿名内部类,在【创建对象】的时候只能使用唯一一次
如果希望多次创建对象,只能使用实现类
2.匿名对象,在【调用方法】时,只能调用唯一的一次
如果希望多次调用,必须要给对象起一个名字
3.匿名内部类是省略了【实现类/子类名称】,但是匿名对象是省略了【对象名称】
强调:匿名内部类和匿名对象不是一回事!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2