码迷,mamicode.com
首页 > 其他好文 > 详细

接口内部的类

时间:2019-01-06 14:34:22      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:命名   string   一个   额外   class   code   cmd   sse   void   

正常情况下,不能在接口放置任何代码,但嵌套类可以作为接口的一部分,你放到接口中的任何类都自动地是public和static.因为类是static的,只是将嵌套置于接口的命名空间内,这并不违反接口的规则,你甚至可以在内部类中实现其外围接口

//在CMD下运行编译后的文件 :java ClassInInterface$Test  在unix下要必须转义$ :Java ClassInInterface\$Test
//
: innerclasses/ClassInInterface.java // {main: ClassInInterface$Test} package object; public interface ClassInInterface { void howdy(); class Test implements ClassInInterface { //如果不能编译可以在这加static public void howdy() { System.out.println("Howdy!"); } public static void main(String[] args) { new Test().howdy(); } } } /* Output: Howdy! *///:~

如果你需要创建某些公共代码,使得它么可以被某个接口的所有不同实现所共用,那么使用接口内部的嵌套类会显得很方便

有时在每个类中都写一个main()方法,用来测试这个类,这样做有一个缺点,那就是必须带着那些编译过的额外代码,使用嵌套类放置内部代码,可以很方便

//TestBed编译后生成两个.class文件 TestBed$Tester.class和TestBed.class
//可以用TestBed$Tester.class类来做测试,但不必再发布产品中包含它,再将产品打包前删除TestBed$Tester.class
//
: innerclasses/TestBed.java // Putting test code in a nested class. // {main: TestBed$Tester} package object; public class TestBed { public void f() { System.out.println("f()"); } public static class Tester { public static void main(String[] args) { TestBed t = new TestBed(); t.f(); } } } /* Output: f() *///:~

 

接口内部的类

标签:命名   string   一个   额外   class   code   cmd   sse   void   

原文地址:https://www.cnblogs.com/jiangfeilong/p/10228708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!