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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨翔 中级黑马   /  2013-1-8 17:15  /  1836 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. interface Inter
  2. {
  3.    void method();       
  4. }

  5. class Test
  6. {
  7.         /*
  8.   static class Inner implements Inter //静态的内部类才能被静态成员调用
  9.         {
  10.            public void method()
  11.            {
  12.               System.out.println("haha");       
  13.                   
  14.            }
  15.         }
  16.         */
  17.        
  18.         static Inter function()
  19.   //返回Inter类型的才能调用 method方法,相当于多态
  20.      //感觉此处 应该是  Inter 匿名内部类返回值 = new Inter实现类类型();
  21.         {
  22.           
  23.            //匿名内部类
  24.            return new Inter()
  25.            {
  26.               public void method()
  27.               {
  28.                  System.out.println("haha");       
  29.                   
  30.               }
  31.                   
  32.            };
  33.           
  34.           // return new Inner();
  35.           
  36.           
  37.           
  38.         }
  39.        
  40.        
  41. }
  42. class InnerClassTest
  43. {
  44.    public static void main(String[] args)
  45.    {
  46.       Test.function().method();       
  47.           
  48.    }       
  49.        
  50. }
复制代码
在学习的过程中有了一点小的体会,就拿了出来,首先是关于 此代码中注释掉的部分,当外部类的静态成员方法去调用内部类时,要保证该内部类也是静态的,因为静态方法是在类实例化之前就可以使用的,可以通过类名调用,而这时动态内部类都还没实例化,也就没有对象去调用,所以会报找不到方法的错误,另外此练习还顺便加深了一下对多态的印象。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
{:soso_e179:}
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马