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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Spring up 中级黑马   /  2012-12-18 13:05  /  1691 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类可以继承其他类或者实现其他接口吗?

点评

抓基础 。  发表于 2012-12-23 01:11

3 个回复

倒序浏览
无名内部类实现接口指的是类本身定义的时候实现接口还是直接定义无名内部类的时候实现接口,前者肯定是可以的,后者应该是不行的,光从语法上都不能实现
class A implements SomeInterface{...}//这里实现接口肯定是可以的
class Main{
...
public A f(){
   return new A(){...}//这里定义了一个无名内部类,要实现接口,语法上都是不能实现的
}
...
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 凊係柈泩 于 2012-12-18 21:28 编辑

匿名内部类是没有名字的内部类。不能继承其他类,但是一个内部类可以作为接口,由另外一个内部类实现。
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对象的特性,只是为了找一个容身之处,所以需要放到一个类中而已,这么一点小事,你还要把它放到类内部的一个类中,过分了啊!提供内部类,不是为让你干这种事情,无聊,不让你干。我想可能是既然静态成员类似c语言的全局变量,而内部类通常是用于创建内部对象用的,所以,把“全局变量”放在内部类中就是毫无意义的事情,既然是毫无意义的事情,就应该被禁止),内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中
在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private等4种类型,这就好像类中定义的成员变量有4种访问类型一样,它们决定这个内部类的定义对其他类是否可见;对于这种情况,我们也可以在外面创建内部类的实例对象,创建内部类的实例对象时,一定要先创建外部类的实例对象,然后用这个外部类的实例对象去创建内部类的实例对象

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
public class A{
   B b = new B(){
      这里就是匿名内部类了。
   };
}
class B{
}
这个代码可以解决你的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马