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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张斯佳 中级黑马   /  2017-10-25 16:26  /  704 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先附上上一篇帖子的链接  :   【哈尔滨校区】关于JAVA基础的一些总结(五)
这次的内容不多,但是匿名内部类对有些人来说不是很好理解,所以先不写太多了!!!
1、内部类

(1)把一个类定义在某个类中的,这个类就被称为内部类,内置类,嵌套类。
(2)
访问特点:
A:
内部类可以直接访问外部类中的成员,因为内部类持有外部类的引用,
格式为:外部类名.this
B:
外部类要想访问内部类的成员,必须创建对象访问。
(3)
内部类的访问格式:
A:
当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象
格式:外部类名.内部类名 变量名 = new 外部类对象.内部类对象
如:Outer.Inner in = new Outer().newInner()
B:
当内部类在外部类成员位置,且被static修饰时
**
外部其他类可直接访问静态内部类的非静态成员
格式:new 外部类名.内部类名().内部类成员
如:new Outer.Inner().function();
**
外部其他类可直接访问静态内部类的静态成员
格式:new 外部类名.内部类名.内部类成员
如:new Outer.Inner.function();
(4)
什么使用时候内部类呢?
假如有A类和B类,A类想直接访问B类的成员,B类访问A类成员的时候,
需要创建A类对象进行访问,这个时候,就可以把A类定义为B类的内部类。
(5)
内部类的位置
A:
成员位置
**
可以被private修饰(BodyHeart)
**
可以被static修饰。(它访问的外部类的成员必须是静态的)
B:
局部位置
**
可以直接访问外部类中的成员,因为还持有外部类的持用
也可以直接访问局部成员,但是局部成员要用final修饰。
注意:局部内部类不能用privatestatic修饰
(6)
通过class文件我们就可以区分是否带有内部类,以及内部类的位置
Outer$Inner:
成员内部类
Outer$1Inner:
局部内部类

2、匿名内部类

(1)前提:继承一个类或者实现一个接口
(
注意不要弄混匿名内部类的前提和多态的前提)
(2)
格式:
new
父类名或者接口名()
{
重写父类方法或者实现接口中的方法。
也可以自定义其他方法。
};
(3)
什么时候定义匿名内部类?
匿名内部类只是为了简化书写,匿名内部类有局限,通常定义匿名内部类时,该类方法不超过3
(4)
匿名内部类的好处和弊端:
好处:简化代码书写
弊端:
不能直接调用自己的特有方法
不能执行强转换动作
如果该类里面方法较多,不允许使用匿名内部类



2 个回复

倒序浏览
回复 使用道具 举报
非常棒的总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马