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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jant60 中级黑马   /  2015-1-12 13:33  /  2826 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我对匿名内部类不太理解,请大神给我讲一讲嘿嘿

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3

查看全部评分

21 个回复

倒序浏览
没有方法名的内部类,必须继承或实现了接口,方法少时可以使用
回复 使用道具 举报
gao896827735 发表于 2015-1-12 16:26
没有方法名的内部类,必须继承或实现了接口,方法少时可以使用

可以再详细点吗,谢谢啦
回复 使用道具 举报
我来说说吧,匿名内部类其实就是那个类的子类。
这里举例,就拿多线程说事吧,多线程创建有两种方式,一个是继承Thread类,重写run方法,一个是实现Runnable接口,重写run方法,这里就拿第一种创建方式说吧,我们平时想要开启多线程是不是要定义一个类去继承Thread类,然后在那个Thread的子类中去重写run方法。
而我们用匿名内部类就非常简便了:
new Thread(){
    public void run(){
   
    }
}
所以说匿名内部类其实是它的子类。 明白了吧,接口也是一样,不过要注意的是,如果一个接口中方法超过三个,就没必要用匿名内部类了,三个以下用匿名内部类就很方便了,因为接口中的方法都是抽象的,里面抽象的方法过多,我们都要对其进行重写,所以这个时候再用匿名内部类的话阅读性会非常差。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
        内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对性爱那个
5,匿名内部类中定义的方法最好不要超过3个!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
来学习一下
回复 使用道具 举报
xiaoyi 中级黑马 2015-1-13 16:26:56
7#
学习了一下
回复 使用道具 举报
noiary 高级黑马 2015-1-13 17:05:38
8#
本帖最后由 noiary 于 2015-1-13 17:06 编辑

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

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

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


匿名内部类的特点:
1.匿名内部类不能有构造方法
2.匿名内部类不能定义任何静态成员,方法和类
3.匿名内部类不能是public protected private static
4.只能创建匿名内部类的一个实例
5.一个匿名内部类一定是在new的后面,用其含义实现一个接口或实现一个类
6.匿名内部类为局部内部类,所以局部内部类的所有限制对其生效

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
老外 发表于 2015-1-13 13:40
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:

毕老师也是这么教的!
回复 使用道具 举报
学习学习
回复 使用道具 举报
今天面试!!!我准备好了!
回复 使用道具 举报
z这个问题我在面试的时候被问到了,你好好研究研究,我当时答得不是很好,不过我看上面的同学说的不错。
回复 使用道具 举报
看看大神怎么说
回复 使用道具 举报
学习学习。。。。。
回复 使用道具 举报
只上车,不买票,干完洗洗走人,懂?
回复 使用道具 举报
enjoy 中级黑马 2015-1-15 10:16:45
16#
学习学习!!
回复 使用道具 举报
云兮丶 发表于 2015-1-13 13:13
我来说说吧,匿名内部类其实就是那个类的子类。
这里举例,就拿多线程说事吧,多线程创建有两种方式,一个 ...

谢谢了,说的挺好
回复 使用道具 举报
学习了!!
回复 使用道具 举报
类的内部定义一个类且有类名a(A a = new A())是局部内部类,如果没有类名,是直接new 出来的就是匿名内部类
回复 使用道具 举报
ZhaoF 中级黑马 2015-1-15 20:55:05
20#
匿名内部类也就是没有名字的内部类。
正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。
但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马