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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Be_myself 中级黑马   /  2014-6-19 22:57  /  867 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

package lianxi;

interface Test{
        void fun();
}

public class Demo{
        public static void main(String[] args){
                new Demo().show(new Test(){
                        public void fun(){}
                });
        }
        void show(Test t){
                t.fun();
               
        }

}
1.不是说定义匿名内部类的前提是内部类必须是继承一个类或实现一个接口,为什么这道题没有继承的关系,没有implementsextends
2.new Demo().show 是什么意思是,住函数的类也可以new吗?
3.分析下程序。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
1.new Demo.show(new Test(){ public void fun(){}},这行代码就是实现了Test接口,
相当于class Anonymous implements Test{public void fun(){}}
Anonymous a = new Anonymous();
new Demo.show(a);

2.new Demo().show();这行代码是创建一个Demo对象然后调用对象的show()方法。
相当于 Demo d = new Demo();       d.show();  有主函数的类也是可以实例化的,主函数只是程序运行的一个入口,不需要实例化就可以调用的,所以main函数都是静态的static。
运行程序,java虚拟机直接找到程序入口,main函数,实例化Demo,调用Demo实例化对象的show方法,
show方法是非静态方法,需要Demo的实例才能调用。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 tiuwing 于 2014-6-20 00:28 编辑

那段代码可以拆开来写成下面的形式,只不过因为只用到一次,就没必要特定去定义变量
  1. class Demo{
  2.         public static void main(String[] args){
  3.                 new Demo().show(new Test(){
  4.                         public void fun()
  5.                                 {System.out.println("dd");}
  6.                 });
  7.                 //上面那段代码可以拆开来写成下面的形式,只不过因为只用到一次,就没必要特定去定义变量
  8.                  Demo d = new Demo();
  9.                  Test t = new Test(){
  10.                         public void fun(){System.out.println("ddd");}
  11.                 };
  12.                  d.show(t);
  13.         }
  14.         void show(Test t){
  15.                 t.fun();
  16.                
  17.         }

  18. }
  19. interface Test{
  20.         void fun();
  21. }
复制代码


new Demo().show(),其实也就是new 一个对象,然后直接调用它的方法。只不过这个对象我只用它一次而已!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

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