打字猴:1.70044085e+09
1700440850
1700440851 本章主要讲述关于Java类、对象、方法的种种规则、限制及建议,让读者在面向对象编程的世界中走得更远,飞得更高。
1700440852
1700440853
1700440854
1700440855
1700440856 编写高质量代码:改善Java程序的151个建议 [:1700438100]
1700440857 编写高质量代码:改善Java程序的151个建议 建议31:在接口中不要存在实现代码
1700440858
1700440859 看到这样的标题读者可能会纳闷:接口中有实现代码?这怎么可能呢?确实,接口中可以声明常量,声明抽象方法,也可以继承父接口,但就是不能有具体实现,因为接口是一种契约(Contract),是一种框架性协议,这表明它的实现类都是同一种类型,或者是具备相似特征的一个集合体。对于一般程序,接口确实没有任何实现,但是在那些特殊的程序中就例外了,阅读如下代码:
1700440860
1700440861 public class Client{
1700440862
1700440863 public static void main(String[]args){
1700440864
1700440865 //调用接口的实现
1700440866
1700440867 B.s.doSomething();
1700440868
1700440869 }
1700440870
1700440871 }
1700440872
1700440873 //在接口中存在实现代码
1700440874
1700440875 interface B{
1700440876
1700440877 public static fnal S s=new S(){
1700440878
1700440879 public void doSomething(){
1700440880
1700440881 System.out.println(“我在接口中实现了”);
1700440882
1700440883 }
1700440884
1700440885 };
1700440886
1700440887 }
1700440888
1700440889 //被实现的接口
1700440890
1700440891 interface S{
1700440892
1700440893 public void doSomething();
1700440894
1700440895 }
1700440896
1700440897 仔细看main方法,注意那个B接口。它调用了接口常量,在没有任何显式实现类的情况下,它竟然打印出了结果,那B接口中的s常量(接口是S)是在什么地方被实现的呢?答案是在B接口中。
1700440898
1700440899 在B接口中声明了一个静态常量s,其值是一个匿名内部类(Anonymous Inner Class)的实例对象,就是该匿名内部类(当然,可以不用匿名,直接在接口中实现内部类也是允许的)实现了S接口。你看,在接口中存在着实现代码吧!
[ 上一页 ]  [ :1.70044085e+09 ]  [ 下一页 ]