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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qian0217wei 高级黑马   /  2015-5-5 00:16  /  1272 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. interface Test
  2. {
  3.         void func();
  4. }
  5. class Demo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 //补足代码;(匿名内部类)
  10.                
  11.         }
  12.         void show(Test t)
  13.         {
  14.                 t.func();
  15.         }
  16. }
复制代码

求大神讲解一下,该怎样书写匿名内部类!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

10 个回复

倒序浏览
明显是要你在主方法里把show方法调用一下。但是得有Demo的对象,那就是Demo d = new Demo();然后d.show(这里需要Test类型的参数); 这个参数就得写匿名内部类了,因为Test是个接口。所以我们得直接实现个匿名内部子类就完事了。我写的也云里雾里。你先好好看看。
  1. Demo d=new Demo();
  2.                         d.show(new Test(){
  3.                                 void func(){
  4.                                         System.out.println("abc");
  5.                                 }
  6.                         });
复制代码


我这可能会出现访问权限问题。方法都改成public 就可以了。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 1 0
  1. interface Test
  2. {
  3.         void func();
  4. }
  5. class Demo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 //补足代码;(匿名内部类)
  10.                                 show(new Test(){
  11.                                         public void func(){
  12.                                                 System.out.println("run.....");
  13.                                         }
  14.                                 });
  15.                
  16.         }
  17.        public static  void show(Test t)
  18.         {
  19.                 t.func();
  20.         }
  21. }
复制代码

不知道是不你需要的
回复 使用道具 举报
补充一下。。。重点在show方法的参数是个对象,而这个对象是用Test的匿名子类来创建的。匿名内部类:1、没有名字。2、继承了一个类或者实现一个接口,复写方法。3、创建对象,并调用。
回复 使用道具 举报
本帖最后由 Ray丶少年 于 2015-5-6 08:06 编辑
  1. package demo;
  2. interface Test
  3. {
  4.         void func();
  5. }
  6. public class Demo
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 //补足代码;(匿名内部类)
  11.                 new Demo().show(new Test(){
  12.                         public void func(){
  13.                                 System.out.println("Function...Run");
  14.                         }
  15.                 });
  16.         }
  17.         void show(Test t)
  18.         {
  19.                 t.func();
  20.         }
  21. }
复制代码
需要访问本类中的show方法,通过新建本类对象去访问,且show方法需要传入一个参数,Test类型的对象那么就通过匿名内部类的方法创建Test接口的子类对象,并覆盖func方法
回复 使用道具 举报
学着后边的把前边的都快忘了。。。。。:L
回复 使用道具 举报
痲ボㄋ. 发表于 2015-5-5 09:46
不知道是不你需要的

代码应该有问题,不能直接使用show方法,原因是主函数是静态的,应该new一个Demo对象!
回复 使用道具 举报

写的很好,要是有解释就更好了!
回复 使用道具 举报
薛慧彬 发表于 2015-5-5 10:38
学着后边的把前边的都快忘了。。。。。

我也是,现在从头开始学!
回复 使用道具 举报
qian0217wei 发表于 2015-5-6 00:16
写的很好,要是有解释就更好了!

我已经在下面加了点理解的文字
回复 使用道具 举报
qian0217wei 发表于 2015-5-6 00:14
代码应该有问题,不能直接使用show方法,原因是主函数是静态的,应该new一个Demo对象! ...

哦哦,前面那个是我自己加的,那是我理解有误了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马