黑马程序员技术交流社区

标题: 匿名内部类怎样理解 [打印本页]

作者: jant60    时间: 2015-1-12 13:33
标题: 匿名内部类怎样理解
我对匿名内部类不太理解,请大神给我讲一讲嘿嘿

作者: gao896827735    时间: 2015-1-12 16:26
没有方法名的内部类,必须继承或实现了接口,方法少时可以使用
作者: jant60    时间: 2015-1-13 11:17
gao896827735 发表于 2015-1-12 16:26
没有方法名的内部类,必须继承或实现了接口,方法少时可以使用

可以再详细点吗,谢谢啦
作者: 云兮丶    时间: 2015-1-13 13:13
我来说说吧,匿名内部类其实就是那个类的子类。
这里举例,就拿多线程说事吧,多线程创建有两种方式,一个是继承Thread类,重写run方法,一个是实现Runnable接口,重写run方法,这里就拿第一种创建方式说吧,我们平时想要开启多线程是不是要定义一个类去继承Thread类,然后在那个Thread的子类中去重写run方法。
而我们用匿名内部类就非常简便了:
new Thread(){
    public void run(){
   
    }
}
所以说匿名内部类其实是它的子类。 明白了吧,接口也是一样,不过要注意的是,如果一个接口中方法超过三个,就没必要用匿名内部类了,三个以下用匿名内部类就很方便了,因为接口中的方法都是抽象的,里面抽象的方法过多,我们都要对其进行重写,所以这个时候再用匿名内部类的话阅读性会非常差。
作者: 老外    时间: 2015-1-13 13:40
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
        内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对性爱那个
5,匿名内部类中定义的方法最好不要超过3个!
作者: Death、    时间: 2015-1-13 14:04
来学习一下
作者: xiaoyi    时间: 2015-1-13 16:26
学习了一下
作者: noiary    时间: 2015-1-13 17:05
本帖最后由 noiary 于 2015-1-13 17:06 编辑

内部类大致分为成员内部类,局部内部类和静态内部类

匿名内部类属于局部内部类

如果满足以下几个需求,可以使用匿名内部类:
1.只用到类的一个实例
2.类在定义后马上用到
3.类非常小
4.给类命名并不会使你的代码更容易被理解


匿名内部类的特点:
1.匿名内部类不能有构造方法
2.匿名内部类不能定义任何静态成员,方法和类
3.匿名内部类不能是public protected private static
4.只能创建匿名内部类的一个实例
5.一个匿名内部类一定是在new的后面,用其含义实现一个接口或实现一个类
6.匿名内部类为局部内部类,所以局部内部类的所有限制对其生效
作者: 自信流云    时间: 2015-1-14 00:23
老外 发表于 2015-1-13 13:40
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:

毕老师也是这么教的!
作者: 时间来过    时间: 2015-1-14 07:59
学习学习
作者: jant60    时间: 2015-1-14 08:59
今天面试!!!我准备好了!
作者: chudaming213    时间: 2015-1-14 09:12
z这个问题我在面试的时候被问到了,你好好研究研究,我当时答得不是很好,不过我看上面的同学说的不错。
作者: 446111220    时间: 2015-1-14 09:20
看看大神怎么说
作者: outsider1020    时间: 2015-1-14 10:08
学习学习。。。。。
作者: Novice.Jin    时间: 2015-1-14 11:12
只上车,不买票,干完洗洗走人,懂?
作者: enjoy    时间: 2015-1-15 10:16
学习学习!!
作者: jant60    时间: 2015-1-15 11:49
云兮丶 发表于 2015-1-13 13:13
我来说说吧,匿名内部类其实就是那个类的子类。
这里举例,就拿多线程说事吧,多线程创建有两种方式,一个 ...

谢谢了,说的挺好
作者: AnElse    时间: 2015-1-15 12:35
学习了!!
作者: 小马范    时间: 2015-1-15 20:02
类的内部定义一个类且有类名a(A a = new A())是局部内部类,如果没有类名,是直接new 出来的就是匿名内部类
作者: ZhaoF    时间: 2015-1-15 20:55
匿名内部类也就是没有名字的内部类。
正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。
但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。
作者: 任我行_2014    时间: 2015-1-15 23:36
关注大神解说,再强化一下
作者: 以利亚    时间: 2015-1-16 09:33
感谢分享学习了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2