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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韦振华 中级黑马   /  2013-3-27 15:35  /  1774 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类的定义格式,为什么匿名内部类的定义必须要实现一个接口或者继承一个类?当内部类中实现的方法太多的时候,还可以用定义匿名内部类吗

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-27 19:46

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

正序浏览
  匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示: new <类或接口> <类的主体> 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。

java 代码


1.interface pr   
2.{   
3.  void print1();   
4.}   
5.  
6.public class noNameClass   
7.{   
8.   public pr dest()   
9.   {   
10.       return new pr(){   
11.       public void print1()   
12.       {   
13.         System.out.println("Hello world!!");   
14.       }   
15.    };   
16.}   
17.  
18.public static void main(String args[])   
19.{   
20.    noNameClass c =  new noNameClass();   
21.    pr hw=c.dest();   
22.    hw.print1();   
23.}   
24.}   

点评

最好将代码写入代码框中,这样看着清晰些,谢谢  发表于 2013-3-27 19:45

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
匿名内部类继承类或实现接口的目的:复写父类的方法,简化代码,提高复用性。实际上是多态的体现,即父类引用接受子类对象,父类引用接受子类对象。
回复 使用道具 举报
一、匿名内部类格式
new 父类或者接口()
{   定义子类的内容   }
二、匿名内部类中定义的方法最好不要超过3个。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马