软件测试 |Object类 - 匿名内部类
  p1prOQge3cDY 2023年11月02日 32 0

在Java中除了内部类之外,还有一种匿名内部类。匿名内部类就是指没用一个具体名称的类,且是在接口和抽象类的应用上发展起来的,那么你明内部类有哪些作用呢?例如,现在有如下的代码。

范例:一个简单的操作

interface A {                                          //定义接口A
          public void printInfo();                       //定义抽象方法
      }
      class B implements  A {                               //定义接口实现类
           public  void printInfo () {                       //覆写抽象方法
                 System.out.printIn("Hello World!!!")   ;
           }
        }
        class X {                                            //定义X类
             public void fun1() {                            //定义fun1()方法
                  this.fun2(new B())  ;                      //传递子类实例     
              }
              public void fun2(A  a)   {                      //接收接口实例
                 a.printInfo() ;                              //调用接口方法
              }
         }
          public class NoInnerClassDemo01  {
                 public static void main(String args[])    {
                         nex X().fun1() ;                      //实例化X类对象并调用fun1()方法
                  }
           }

程序运行结果:

Hello World!!!

相信你们对于本程序都应该很容易读懂,但是现在如果接口的实现类只使用一次,那么还有必要单独定义一个子类B吗?很明显是没有必要的,所以此时就可以使用匿名内部类完成,代码修改如下。

范例:匿名内部类

interface A {                                           //定义接口A
         public   void printInfo();                         //定义抽象方法
     }
      class X {
           public  void fun1(){                            //定义X类
                this.fun2(new A() {                          //定义fun1()方法
                     public void printInfo() {             //匿名内部类
                            System.out.printIn("Hello World!!!");
                     }
                  });
            }
            public void fun2(A a){                            //接收接口实例
                  a.printInfo();                             //调用接口方法
            }
        }
         public class NoInnerClassDemo02 { 
               public ststic void main(String args[])   {
                    new  X().fun1();                               //实例化X类对象并调用fun1()方法
                }
           }

程序运行结果:

Hello World!!!

以上程序定义了一个匿名内部类,对于以上代码可能有一些读者看到不是很清楚,下面分步为读者解释此代码。

(1)直接实例化接口对象,代码如下:

new A() {}

此时,是直接为接口实例化,从前面的概念应该知道,接口本身是不能直接进行实例化的,所以在接口实例化后要有一个大括号,在其中编写具体的实现方法。

(2)实现抽象方法,代码如下。

new A() {                                               //匿名内部类
     public void printInfo() {                           //实现接口中的抽象方法
          System.out.printIn("Hello World!!!");
     }
   }

整个代码编写完后,实例上此时就是一个接口的实例化对象了,其中的抽象方法也就实现了。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

p1prOQge3cDY
最新推荐 更多