书上写的神神叨叨的实在不理解给了一段代码看也不是很明白
谁能帮我讲讲这段代码和匿名类
package shuzu;interface A {
public void fun1();
}class B {
  int i=10;
  public void get(A a)//声明了一个get方法,用于对A接口的实例化,并调用fun1()方法
  {
  a.fun1();
  }
  public void test()
  {
  this.get(new A()
  {
  public void fun1()
  {
  System.out.println(i);
  }
  }
  );
  }
}
public class niming {
public static void main(String[] args) {
B b=new B();
b.test();
}}

解决方案 »

  1.   

    简单的说两个关键字,一个内部,一个匿名。
    平常定义一个类要单独写一个.java文件,而内部则不这样定义,它可以在一个类的里面定义,局部内部类还可以在方法中定义一个类
    匿名,就是没有名字,它不用显示的用class关键字去定义,而是直接用new关键字去创建一个类,如果是接口的话,new的时候,在{}中去实现抽象方法即可。不明白的话,用一用慢慢体会就行了。
      

  2.   

    /*
    匿名内部类:
    1,匿名内部类其实就是内部类的简写格式。
    2,定义匿名内部类的前提:
    内部类必须是继承一个类或者实现接口。
    3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
    4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
    5,匿名内部类中定义的方法最好不要超过3个。*/
    abstract class AbsDemo
    {
    abstract void show();
    }class Outer
    {
    int x = 3; public void function()
    {
    AbsDemo d = new AbsDemo()
    {
    int num = 9;
    void show()
    {
    System.out.println("num==="+num);
    }
    void abc()
    {
    System.out.println("haha");
    }
    };
    d.show();
    }
    }class InnerClassDemo
    {
    public static void main(String[] args) 
    {
    new Outer().function();
    }
    }
    仅供参考
      

  3.   

    我的代码是用普通内部类实现的。楼主可以反复试试,就会有体会了。
    interface A {
      public void fun1();
    }class B {
      int i=10;
      //----------------- 新建一个内部类,实现接口A
      //-----------------
      class RealA implements A
      {
         public void fun1()
         {
           System.out.println(i);
         }
      }
      //------------------ 
      public void get(A a)//声明了一个get方法, 需要一个实现了接口A的类的对象。
      {
        a.fun1();
      }
      public void test()
      {
        RealA ra=new RealA();//创建一个实现了接口A的对象。
        this.get(ra); //这块传进一个实现了接口A的对象。
      }
    }
    public class Niming {
      public static void main(String[] args) {
        B b=new B();
        b.test();
      }
    }
      

  4.   

    说说我的经历吧
    java出生的其实语言都一样,关键还是要精通 没有好的语言关键是你能不能写出好的代码?
    刚出来充满了奋斗的激情,刚出现没什么资本所以想在一家公司待久学点知识所以没计较money的多少,第一件公司说有个技术带,我承认我不想自学,如果你们说我懒那就说吧,程序员没有近路或者说干什么都没有近路,可是不得不承认有技术带比我们自己无头苍蝇的找要容易的多,所以也就是这个原因我留下了,没到10天技术走了,走前让我做他的位置还有一个同事也是新来的一共2个人开发电子商务,其实网站都做好了,的就是客户来了改改需求罢了,知道的都懂,同一个模板不可能适应多个客户,这都没什么,可是遇到了一件事然后我走人了,技术走了一个客户买了个一级域名所以需要在服务器的的配置文件修正再重新生成,按照技术走前交接的任务操作修正了文件然后服务器就重启不了了,也就是说一级域名没有挂上去也就没有编译成功吧,服务器这块我想在学校老师不可能拿个服务器让我们操作吧,所以不理解,到网上找了些资料……说真的都怪我没备份就改了,其实就算备份了也不能真正编译成功,因为在编译的时候很多的域名已经失效了,就是说失效的域名需要delete,问题来了……搞着搞着整个系统的网址都打不开了,猜猜下面是什么情况,就是说公司以前给客户做的网址都打不开了,那个时候真的急的我做梦的时候都梦到服务器编译成功了,按照技术走前给我的代码去执行就是不行,到这里想说下,做事一点要备份,安全问题嘛。还有就是如果真的错了那我们也有理由,最起码责任不在我们,因为我们备份了,就是这个原因我被炒了,其实我早想走了不过一直想搞搞服务器这块,项目好了总是要上线的吧,就这样我离开了第一个company
    第二个是上海的那个时候还是想找java的虽然也会.net可是这软件这块2个月不敲代码就会生疏,可是恢复的也很快,就这样是离开了苏州到了上海……
    第二个公司做asp的妈的不知道为什么让我一个java的来,第一天让我做功能就是写个程序用的是ssh,让我写个邮件,上传,下载,qq客服聊天,还有一些……都是小功能,写好了之后说让我吧java的转成asp的,尼玛这不是坑人吗,我怎么知道,如果要转还不如直接用java写,看他的代码我都头疼,他用的asp写的,代码都是在前台用小脚步访问数据库以及操作的,看了些他的代码真的很不好(一开始想说很烂 不过我又有什么资格说别人呢),居然连前台和后台都不知道,其实他前台和后者都混乱在一起了,哎,不说了,可能是模式的问题吧!于是说……就是逐客令吧了 我也想走,一个教育公司刚开始,说网上教育,学编程的网上教育的你们觉得可能吗,没个安定的居所学编程遇到问题怎么办,这是我问他的,你猜他怎么说 他说:我们这边的代码都是验证过的不可能出现错误,当说这句话我就蛋疼了,其实我想问如果错了你们这边难道会有老师每天每时都在线吗?然后再远程?我记得有一个我保存文档ctrl+s 光标的地方多个了s 找了我半天才找到,这问题怎么办,写程序哪里有永远成功的代码(很多因素 个人操作问题占很多比如我刚刚的多了个s的问题,导致我以后都用鼠标保存了 害怕……),而且加上网上没有约束限制,出问题不能及时修正,无沟通的人等等,所以学这东西也不是学功能看看某个功能就会了,而且那是在有基础的能力上看的,对于一窍不通的人在网上学编程十死无生(个人观点)
    就这样离开了第二家公司(fail)
    第三家公司 哎 是qq面试的说那边有人会带带的,其实我也不是真的让他带而是在我有的问题没碰到的时候希望有个人指点一下,到了公司我还记得是夏天,吗的技术来了和我说这个网站做的流程和我的任务,基本没什么问题,可问题来了,不知道你们有没有感觉,看别人的代码或者在别人的代码上写程序真的是一家折磨人的是,哦对了 技术和我说了下就走了,然后我在一间房子里写程序,就小弟一个人写,他妈个比的老板让我第一天就写功能,他妈我数据库那个表都还没看呢!更可气的是还要用他们的代码因为只是在他们代码上修改而不是某一个页面是我完全我一个人写的 折磨人呢。在那边做的最后一个功能我还依稀记得,是一个网站公告,比如我在后台写一些网站更新或者新添加和网站规则的说明,这里用到的才fckeditor编辑器,我还记得那个时候最新版是2.26还是2.62的,下载了个这个东西改改代码总算是完成了,然后我就走人了,我感觉环境不行一个人写程序我觉得我不适合,无聊 太乏味了,还有连个说话的人都没有,一个人下班,一个人吃饭 我觉得我就是这个世界多出来的‘马龙’,
    辗转反侧又回到了苏州这个时候离毕业一间2个多月了,说说我的经历吧
    java出生的其实语言都一样,关键还是要精通 没有好的语言关键是你能不能写出好的代码?
    刚出来充满了奋斗的激情,刚出现没什么资本所以想在一家公司待久学点知识所以没计较money的多少,第一件公司说有个技术带,我承认我不想自学,如果你们说我懒那就说吧,程序员没有近路或者说干什么都没有近路,可是不得不承认有技术带比我们自己无头苍蝇的找要容易的多,所以也就是这个原因我留下了,没到10天技术走了,走前让我做他的位置还有一个同事也是新来的一共2个人开发电子商务,其实网站都做好了,的就是客户来了改改需求罢了,知道的都懂,同一个模板不可能适应多个客户,这都没什么,可是遇到了一件事然后我走人了,技术走了一个客户买了个一级域名所以需要在服务器的的配置文件修正再重新生成,按照技术走前交接的任务操作修正了文件然后服务器就重启不了了,也就是说一级域名没有挂上去也就没有编译成功吧,服务器这块我想在学校老师不可能拿个服务器让我们操作吧,所以不理解,到网上找了些资料……说真的都怪我没备份就改了,其实就算备份了也不能真正编译成功,因为在编译的时候很多的域名已经失效了,就是说失效的域名需要delete,问题来了……搞着搞着整个系统的网址都打不开了,猜猜下面是什么情况,就是说公司以前给客户做的网址都打不开了,那个时候真的急的我做梦的时候都梦到服务器编译成功了,按照技术走前给我的代码去执行就是不行,到这里想说下,做事一点要备份,安全问题嘛。还有就是如果真的错了那我们也有理由,最起码责任不在我们,因为我们备份了,就是这个原因我被炒了,其实我早想走了不过一直想搞搞服务器这块,项目好了总是要上线的吧,就这样我离开了第一个company
    第二个是上海的那个时候还是想找java的虽然也会.net可是这软件这块2个月不敲代码就会生疏,可是恢复的也很快,就这样是离开了苏州到了上海……
    第二个公司做asp的妈的不知道为什么让我一个java的来,第一天让我做功能就是写个程序用的是ssh,让我写个邮件,上传,下载,qq客服聊天,还有一些……都是小功能,写好了之后说让我吧java的转成asp的,尼玛这不是坑人吗,我怎么知道,如果要转还不如直接用java写,看他的代码我都头疼,他用的asp写的,代码都是在前台用小脚步访问数据库以及操作的,看了些他的代码真的很不好(一开始想说很烂 不过我又有什么资格说别人呢),居然连前台和后台都不知道,其实他前台和后者都混乱在一起了,哎,不说了,可能是模式的问题吧!于是说……就是逐客令吧了 我也想走,一个教育公司刚开始,说网上教育,学编程的网上教育的你们觉得可能吗,没个安定的居所学编程遇到问题怎么办,这是我问他的,你猜他怎么说 他说:我们这边的代码都是验证过的不可能出现错误,当说这句话我就蛋疼了,其实我想问如果错了你们这边难道会有老师每天每时都在线吗?然后再远程?我记得有一个我保存文档ctrl+s 光标的地方多个了s 找了我半天才找到,这问题怎么办,写程序哪里有永远成功的代码(很多因素 个人操作问题占很多比如我刚刚的多了个s的问题,导致我以后都用鼠标保存了 害怕……),而且加上网上没有约束限制,出问题不能及时修正,无沟通的人等等,所以学这东西也不是学功能看看某个功能就会了,而且那是在有基础的能力上看的,对于一窍不通的人在网上学编程十死无生(个人观点)
    就这样离开了第二家公司(fail)
    第三家公司 哎 是qq面试的说那边有人会带带的,其实我也不是真的让他带而是在我有的问题没碰到的时候希望有个人指点一下,到了公司我还记得是夏天,吗的技术来了和我说这个网站做的流程和我的任务,基本没什么问题,可问题来了,不知道你们有没有感觉,看别人的代码或者在别人的代码上写程序真的是一家折磨人的是,哦对了 技术和我说了下就走了,然后我在一间房子里写程序,就小弟一个人写,他妈个比的老板让我第一天就写功能,他妈我数据库那个表都还没看呢!更可气的是还要用他们的代码因为只是在他们代码上修改而不是某一个页面是我完全我一个人写的 折磨人呢。在那边做的最后一个功能我还依稀记得,是一个网站公告,比如我在后台写一些网站更新或者新添加和网站规则的说明,这里用到的才fckeditor编辑器,我还记得那个时候最新版是2.26还是2.62的,下载了个这个东西改改代码总算是完成了,然后我就走人了,我感觉环境不行一个人写程序我觉得我不适合,无聊 太乏味了,还有连个说话的人都没有,一个人下班,一个人吃饭 我觉得我就是这个世界多出来的‘马龙’,
    辗转反侧又回到了苏州这个时候离毕业一间2个多月了,