写点什么

软件测试 |Object 类 - 匿名内部类

  • 2023-08-10
    北京
  • 本文字数:1554 字

    阅读完需:约 5 分钟

更多学习资料戳!!!

在 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!!!");     }   }
复制代码

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

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 |Object类 - 匿名内部类_测试_测吧(北京)科技有限公司_InfoQ写作社区