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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© /aiq玩完?/aiq 中级黑马   /  2014-8-6 23:46  /  1307 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类是否可以继承其它类,是否可以实现接口?  为什么,求大神指点

7 个回复

倒序浏览
假如可以继承其他类或者实现接口,但是他没有名字,那我们怎么创建对象,所以我觉的不行
回复 使用道具 举报
匿名内部类其实就是匿名子类对象,对象怎么还可以继续和实现接口呢
回复 使用道具 举报
hmid 来自手机 中级黑马 2014-8-7 00:57:48
板凳
不能。而且内部类一般只用在那些只有一个方法需要实现的类或接口,要不可读性就不行。
回复 使用道具 举报
扛把子 发表于 2014-8-6 23:55
匿名内部类其实就是匿名子类对象,对象怎么还可以继续和实现接口呢

是不可以继承的。“一个内部类可以作为一个接口,由另一个内部类实现。
嵌套类可以作为接口的内部类。正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则”请问这句话的意思是说匿名内部类可以实现接口吗?
回复 使用道具 举报
   其实匿名内部类是要作为某个类或者接口实现类来完成初始化的,你这样子想嘛:你匿名内部类连类名都没有,那么你怎么才能通过new关键字产生你这个匿名内部类的对象呢,肯定是要借助父类或者父接口的引用来完成内部类的定义,先不说功能,你看我下面两个匿名内部类的定义:
new Thread(){
                        public void run(){
                                while(a<30)
                                a++;
                        }
                }.start();
                new Thread(new Runnable(){
                        public void run(){
                                while(a<30){
                                        a++;
                                }
                        }
                }).start();
这是两个能运行的线程哦。编译也不会报错的
我定义了两个内部类,第一个是继承自Thread类,另外一个是实现Runnable接口的,如果你不重写Runnable接口中的run方法,那么会提示报错,证明了我内部类实现接口完全是按照类实现接口的原则来声明的。
回复 使用道具 举报
匿名内部类可以继承一个类,或实现一个接口,但不能同时具备这二者:
继承一个类的匿名内部类:new Object() { };
实现一个接口的匿名内部类: new Runnable() { public void run() {}};
回复 使用道具 举报
匿名内部类会隐式的继承类或实现接口,具体继承的类或实现的接口要看new后面的类. 匿名内部类一般作为方法参数。匿名内部类毕竟还是一个类,肯定能继承
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马