A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 洋葱头头 金牌黑马   /  2015-11-20 19:05  /  3050 人查看  /  39 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 洋葱头头 于 2015-11-20 19:05 编辑

首先,内部类的定义,顾名思义 就是在一个类里,在定义一个类就是内部类如图:class In 就是一个内部类,很明显他存在于class Out的中


所以你可以理解为有内部类 就有外部类   
那么内部类的访问特点:
1.内部类可以直接访问外部类的成员,包括私有。
2.外部类要访问内部类的成员,必须创建对象。如图



内部类的分类:按照内部类存在于外部类的位置来分类
1.存在于外部类中 成员位置(方法外)  -- 成员内部类
2.存在于外部类局部位置-- 局部内部类
一,成员内部类
存在于外部类中成员位置的类成为  成员内部类如上图1,class In就是成员内部类

?外界如何访问class In呢
格式: 部类名.内部类名 对象名 = 外部类对象.内部类对象;
如图:

但是 内部类之所以定义为内部类 就是不想让外界直接的访问,所以一般加上private修饰,由外部类提供方法访问:

另外,内部类还可以被static修饰,而且仅仅只有内部类可以被static修饰,被static修饰的内部类只可以访问外部类静态成员
二,局部内部类
存在于外部类局部位置(可以理解为方法中)
局部内部类和成员内部类一样 ,也可以直接访问外部类成员


值得一提的是,使用局部内部类访问外部类局部变量时,需要加final关键字,这也是一道面试题
下面,学习android的同学会经常用到的匿名内部类,真的是非常常用
匿名内部类
在使用匿名内部类时,要记住以下几个原则:
匿名内部类不能有构造方法.
匿名内部类不能定义任何静态成员,方法和类
匿名内部类不能是public,protected,private,static.
只能创建匿名内部类的一个实例
一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类
还有,因为匿名内部类是局部内部类 所以对局部内部类的所有限制都对其生肖
匿名内部类:

因为匿名内部类是一个子类实例 所以也可以看成


这是接口通过匿名内部类实现的实例化,个人理解为接口的多态性
android中匿名内部类的简单应用

如代码所示,给listView设置条目点击事件,因为OnItemClickListener是一个接口,不能作为参数传递,所以我们使用到了匿名内部类,来实现里面的抽象方法.


39 个回复

倒序浏览
正准备复习下这部分,学习了,现在在java基础班,几乎用不到内部类,源码里却有很多,还不太明白内部类的应用场景
回复 使用道具 举报
Aaron_wang 发表于 2015-11-20 22:11
正准备复习下这部分,学习了,现在在java基础班,几乎用不到内部类,源码里却有很多,还不太明白内部类的应 ...

在android里会大量使用  所以学android的同学还是要掌握一下,
回复 使用道具 举报
版主大爱,复习了
回复 使用道具 举报
萧未然 发表于 2015-11-21 09:18
版主大爱,复习了

{:3_64:}{:3_64:}
回复 使用道具 举报
很详细,清晰易懂
回复 使用道具 举报
太赞了   好全面 正好复习一下
回复 使用道具 举报
刚好对匿名内部类不是很了解,谢谢分享
回复 使用道具 举报
z940505 中级黑马 2015-11-21 21:29:41
9#
虽然知道你是在水,但我还是无耻的回帖了
回复 使用道具 举报
gih146 中级黑马 2015-11-21 21:30:58
10#
学习了,这方面确实不太好理解
回复 使用道具 举报
艾玛  收藏了!
回复 使用道具 举报
看懂内部类,对看源码还是挺有帮助的,学习了
回复 使用道具 举报
怎样才能快速获取技术分啊,我好急啊,求指教
回复 使用道具 举报
z940505 发表于 2015-11-21 21:29
虽然知道你是在水,但我还是无耻的回帖了

靠 我打了半天的帖子{:3_47:}
回复 使用道具 举报
bulala 中级黑马 2015-12-11 15:10:31
15#
学习了
回复 使用道具 举报
DaYe 中级黑马 2015-12-11 19:10:08
16#
很好很清晰明了
回复 使用道具 举报
路过 学习
回复 使用道具 举报
马赛 中级黑马 2015-12-11 22:48:55
18#
在个知识点一直没弄懂
回复 使用道具 举报
星晴。 来自手机 中级黑马 2015-12-11 23:28:47
19#
好贴必顶啊!
回复 使用道具 举报
刚看过,又浏览了一次,感觉每次看视频都会理解,但是,让自己举例啥的复述啥的就是不行,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马