黑马程序员技术交流社区

标题: 关于匿名内部类练习的一点小体会 [打印本页]

作者: 杨翔    时间: 2013-1-8 17:15
标题: 关于匿名内部类练习的一点小体会
  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. }
复制代码
在学习的过程中有了一点小的体会,就拿了出来,首先是关于 此代码中注释掉的部分,当外部类的静态成员方法去调用内部类时,要保证该内部类也是静态的,因为静态方法是在类实例化之前就可以使用的,可以通过类名调用,而这时动态内部类都还没实例化,也就没有对象去调用,所以会报找不到方法的错误,另外此练习还顺便加深了一下对多态的印象。

作者: 高境    时间: 2013-1-8 18:49
{:soso_e179:}
作者: 高境    时间: 2013-1-8 18:50
{:soso_e179:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2