JavaSE基础知识(二十)--Java内部类之接口内部的类(static类)

Java SE 是什么,包括哪些内容(二十)?

本文内容参考自Java8标准
再次感谢Java编程思想对本文的启发!
在正常情况下,不能在接口内部放置任何代码,但嵌套类(static类)可以作为接口的一部分。你放到接口中的任何类都自动地是public和static的。所以,你只是将嵌套类置于接口的命名空间内,这并不违反接口的规则,你甚至可以在嵌套类中实现外部接口。
代码示例:

// 将嵌套类放置在接口的命名空间内
   //外部接口ClassInInterface
   public interface ClassInInterface{
      //方法howdy()
      void howdy();
      //类Test实现接口ClassInInterface
      //类Test默认是public static的
      //在这里,内部类直接实现了外部接口
      class Test implements ClassInInterface{
         //实现方法howdy()
         public void howdy(){
            //打印字符串"Howdy!"
            System.out.println("Howdy!");
         }
         //程序执行入口main方法
         public static void main(String[] args){
            //创建内部类的对象同时调用方法howdy()
            new Test().howdy();
         }
      }
   }

如果想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所公用,那么使用接口内部类的嵌套类会显得很方便。
之前曾经有过建议,在每个类中都写一个main()方法,用来进行测试,这样做实际上还是有一个缺点的,那就是必须带着那些已编译过的额外代码,如果你觉得这样麻烦,可以使用嵌套类来放置测试代码。
代码示例:

// 利用嵌套类进行测试
   public class TestBed{
      public void f(){
         System.out.println("Howdy!");
      }
      public static class Tester{
         //程序执行入口main方法
         public static void main(String[] args){
            TestBed t = new TestBed();
            t.f();
         }
      }
   }

在上面的示例代码中生成了一个独立的类TestBed$Tester(要运行这个程序,执行java TestBed $ Tester既可,在Unix/Linix系统中必须转义 $),可以使用这个类来测试,但是不必再发布的产品中包含它,在将产品打包前可以简单地删除TestBed $ Tester.class。
PS:时间有限,有关Java SE的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明CSDN,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值