接口与内部类相关的内容,早就已经看过了,但是,因为急于求成,没有花多余的时间去消化这些知识,所以,心里还有一股模糊的感觉。我又花了一些时间来回顾了一下。 接口的作用: 一、定义一个协议,使得大家得以遵守,这样,代码就更加规范,更加便于管理 二、用于回调(一个类实现此接口,然后在另一类的一个模板方法中,这个类的实例的引用被向上转型而后使用。) 呵呵,说清楚这些事情有的难度,我感觉到,它是模式上的问题。 个人感觉上,java中用接口在大多数的情况下是用于向上转型,即一个接口拥有多个实现,而又在某处定义了这样一个方法,这个方法的参数类型就是这个接口名,这样,这个方法就可以接受所有从这个接口实现得到的类的实例(我知道这话有点拗口,但也没办法),接合后面学到的“容器”章节的内容,越发觉得,使有者们为了代码的通用性,可维护性,他们只有在很不得己的情况下才会使用那个实现的类的特有方法,一般的情况下,他们都会将其向上转型,这样,以后要修改代码的话,就很简单,只要将定义的地方修改一下就行了。这就是所谓的消去对类型的耦合性了。 这一章节,作者总结了很多非要不断实验才得到的一些非常有用的结论,要是我的话,就不能考虑到所有可能会发生的技术细节。 一、接口中可以存在接口,只能嵌入嵌套类,而不能是非嵌套类 二、类中可以嵌入类与接口 三、内部类,内部接口可以定义成为private,protect,它们就相当于外围类的一个成员 四、private的类通常用于内部使用,更多用于返回一个指向外部接口的向上转型的引用 五、内部类的构造器被定义为private,但是,它还是可以从其外围类中进行实例化 六、当内部类为public或者是包妨问权限时,可以在外围类之外的其他中实例化它,除此之处,内部类可 以继承、覆盖(这个有点小技巧), 七、非嵌套类的内部类进行实例化时,需要一个指向外围类的引用,即先实例化外围类,再实例化内部 类。 八、内部类用于实现多继承 九、内部类可以妨问外围类的所有成员(包括private成员) 十、当一个类要实现两个接口,但是,两个接口有部分方法是相同的,这时,可以用一个内部类来实现其 中一个接口,当然,这种情况不只是发生在同时实现两个接口的情况。 十一、接口的成员必然是public的。 十二、接口中的成员在被实现时可以将其实现为private或者是其他权限 十三、局部内部类的作用域在对应代码块中,不能在其前面加权限修饰符 十四、匿名内部类要使用其外围类中的成员变量,这此变量必须是final的。不然将会在编译时抛出错误。 十五、可以不实现一个接口的内部接口! 从一处得到三句话,觉得相当有用、中肯,所以写下来: 接口是指出想做什么! 类是指出细节 如果两个类联系非常的紧密,那么建议最好用内部类!!
回顾了一下,暂时只总结了这么一些,可能初学者看到了后会头皮发麻,甚至会丧失将java学习下去的信心,这是能够理解的,所以,一个真正要学习的人,不应当来网上来瞎看,只能提供一个参考,网上的东西,都是他们的一些体会。这些体会很可能会误导读者。 |
|