内部类
来源:互联网 发布:交大医学院网络教育 编辑:程序博客网 时间:2024/04/24 08:40
- 内部类
- 定义:一个类可以定义在一个类的内部,定义在类内部的类称之为Inner,其所在类的称为Outer
- 成员内部类
- 会生成两个类 --> Outer.class, Outher$Inner.class
- 实例化
- 除了在外部类中实例化外,还可以在外部类的外部实例化: Outer.Inner in = new Outer().new Inner();(不建议)
- 内部类的访问,通过"外部类.内部类"的形式表示
- 作用域:与成员变量规则一致
- 作用:可以方便的使用外部类的私有数据,并具有相对独立性,用于在类内部封装相对独立功能,但要依赖外部类的对象.
- 实现隐藏
- 拥有访问外部类的所有权限
- 实现多重继承
- 缺点:内部类打破类的常规定义(类是由属性和方法组成)
- 扩展:
- 内部不能定义静态成员,静态内部类没有限制
- 通常只服务于Outer,对外不具备可见性,建议为private
- 一般情况下, Inner对象会在Outer对象中创建(构造方法或其它方法)
- Inner对象中会有一个隐式的引用指向创建它的Outer类对象
- 可以在外部类中,对外提供操作内部类的方法
- 静态内部类
- 在类中定义,修饰符为static, Outher$Inner.class
- 局部内部类(方法内部类)
- 在方法中定义的类
- 局部匿名内部类
- 如果在一段程序中需要创建一个类的对象(通常这个类需要实现某个接口或者继承某个类),而且对象创建后,这个类的价值也就不存在了,那么这个类可以不需要命名,称之为匿名内部类
- 内部类中如果有扩展的公开方法,内部类外不可能调用到
- 总结:
- 局部内部类/局部匿名内部类中访问局部变量/参数,不能改变其值,只读.若更改值编译不会通过,通常为final
- 不能有任意修饰符,只能在方法内部实例化对象
- 编译后名称为Outer$nInner()
- 隐藏实现,避免方法外实例化.
0 0
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 算法训练 王、后传说 (八皇后问题)
- 38.二叉树的深度
- SSH框架中怎么使用Hibernate查询一个对象
- JavaWeb宝典零碎笔记(Servlet&JSP)
- 程序员励志语录
- 内部类
- BFC 神奇背后的原理
- 数据结构 链表|简单链表
- C++第3次实验(提高班)-数组
- 深入浅出DNS系列(八)- subnet
- POJ2289-Jamie's Contact Groups(二分图多重匹配)
- Linux 平台搭建C语言集成开发环境(Ubantu16.04)
- C指针基础(三)
- 【求职之路】(1)利用二分法查找一个数字在数组中的位置