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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 余威宏 于 2013-5-27 18:50 编辑

interface Inter
{
        void method();
}


class InnerDemo
{
        public static void main(String[] args)
        {
                show(new Inter(){
                        public void method()
                        {
                                System.out.println("hello world!!");
                        }
                } );
        }
        public static void show(Inter abc)
        {
                abc.method();
        }
}
  这道匿名类,一下子让我迷糊起来,老是有点不太明白,我想知道这题运行的时候步骤是什么样的呢?这题的匿名类能否换成不是匿名类的形式啊? 如果能的话,应该怎么转换形式呢?  
    还有能否帮我说明一下使用匿名类有什么需要注意的呢,匿名类的好处是什么? 请详解,谢谢!!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
本帖最后由 卢祥洲 于 2013-5-22 15:23 编辑

1、运行步骤:
public static void show静态方法--->main主方法--->show方法--->show方法中new Inter(){...}创建对象。
2、可以换成不是匿名类:
  1. interface Inter{
  2.         void method();
  3. }
  4. class InterImpl implements Inter{
  5.         public void method(){
  6.                 System.out.println("hello world!!");
  7.   }
  8. }
  9. public class InnerDemo{
  10.         public static void main(String[] args){
  11.           InterImpl impl = new InterImpl();
  12.     show(impl);
  13.   }
  14.   public static void show(Inter abc){
  15.     abc.method();
  16.   }
  17. }
复制代码
3、匿名类好处:
当类只要用一次时,就可以直接用匿名类,不需要再单独定义一个类(麻烦),你看我4——8行写好了,在main方法里还要再定义对象多麻烦,匿名类直接写类体、然后定义对象,一步到位。
4、注意事项:
定义匿名类:构造函数的参数要注意,并不全是默认构造函数。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
好处是继承类的同时可以实现接口。
使用匿名内部类时,要记住以下几个原则:
 ·匿名内部类不能有构造方法。  
 ·匿名内部类不能定义任何静态成员、方法和类。  
 ·匿名内部类不能是public,protected,private,static。  
 ·只能创建匿名内部类的一个实例。
  ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。  
 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
  ·内部类只能访问外部类的静态变量或静态方法。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
顶一下,多谢大家的热心啊
回复 使用道具 举报
加油  问题不错

楼主你好,如果问题以解决,请修改分类,谢谢合作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马