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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔自成 中级黑马   /  2013-5-2 13:06  /  1390 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

要求:创建一个包含内部类的接口,该内部类中有一个static方法,它将调用接口中的方法并显示结果,实现这个接口,并将这个实现的一个实例传递给这个方法。
  1. class Test
  2. {       
  3.         void function(){
  4.                 new A(){
  5.                         public void print(){};
  6.                         //new B().show(); 为什么不能new B
  7.                         //B.show(); 这样也不行。
  8.                 };
  9.         }

  10.         public static void main(String[] args)
  11.         {
  12.                 new Test().function();
  13.         }
  14. }

  15. interface A
  16. {
  17.         class B implements A
  18.         {
  19.                 public void print(){
  20.                         System.out.println("BBBBB");
  21.                 }

  22.                 static void show(){
  23.                         new B().print();
  24.                 }
  25.         }

  26.         void print();
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 吴东泽 于 2013-5-2 13:54 编辑

修改如下:
  1. class Test3
  2. {        
  3.         void function(){
  4.                 new A(){
  5.                         public void print(){
  6.                             B.show(); //调用方法要在方法中
  7.                         };
  8.                 }.print();//创建匿名内部类 还需要调用print才能打印
  9.         }

  10.         public static void main(String[] args)
  11.         {
  12.                 new Test3().function();
  13.         }
  14. }

  15. interface A
  16. {
  17.         class B implements A
  18.         {
  19.                 public void print(){
  20.                         System.out.println("BBBBB");
  21.                 }

  22.                 static void show(){
  23.                         new B().print();
  24.                 }
  25.         }

  26.         void print();
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张洪慊 于 2013-5-2 16:39 编辑

我是这样写的,以前还从没干过在接口中定义内部类- -!
在写的过程中对比了下 类中的内部类:

  1. interface Out
  2. {
  3.         public abstract void func();
  4.          
  5.      class In{ //该内部类可以有static/abstract/abstract static修饰符
  6.                //经过测试:内部类中含有静态方法,该接口中的内部类可以不是静态
  7.                            //这点和类中的内部类不相同
  8.           
  9.           static void method(ImpOut i){
  10.           i.func();//ImpOut //访问在ImpOut中复写的func
  11.          }
  12.        
  13.    }
  14. }
  15. class ImpOut implements Out{

  16.     public void func(){
  17.           
  18.           System.out.println("ImpOut");
  19.         }
  20.      public static void main(String[] args){
  21.        
  22.           new Out.In().method(new ImpOut());//创建接口Out的内部类对象访问method
  23.           
  24.           Out.In.method(new ImpOut());//经过测试在接口中的内部类(非静态)中的静态成员还可以直接通                           
  25.                                       //Out.In访问
  26.                                       //这点在类中的内部类,只有内部类也是静态才可以
  27.           
  28.     }                        

  29. }
复制代码

评分

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

查看全部评分

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