昆明java培训
达内昆明广州春城路

18487146383

热门课程

在接口中不要存在实现代码

  • 时间:2016-09-30
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明Java培训的老师知道,看到这样的标题,大家是否感到郁闷呢?接口中有实现代码吗?这怎么可能呢?确实,接口中可以声明常量,声明抽象方法,可以继承父接口,但就是不能有具体实现,因为接口是一种契约(Contract),是一种框架性协议,这表明它的实现类都是同一种类型,或者具备相似特征的一个集合体。对于一般程序,接口确实没有任何实现,但是在那些特殊的程序中就例外了,阅读如下代码:

1 public class Client31 {

2    public static void main(String[] args) {

3        //调用接口的实现

4        B.s.doSomeThing();

5    }

6 }

7

8 //在接口中存在实现代码

9 interface B {

10    public static final S s = new S() {

11        public void doSomeThing() {

12            System.out.println("我在接口中实现了");

13        }

14    };

15 }

16

17 //被实现的接口

18 interface S {

19    public void doSomeThing();

20 }

仔细看main方法,注意那个B接口。它调用了接口常量,在没有实现任何显示实现类的情况下,它竟然打印出了结果,那B接口中的s常量(接口是S)是在什么地方被实现的呢?答案在B接口中。

在B接口中声明了一个静态常量s,其值是一个匿名内部类(Anonymous Inner Class)的实例对象,就是该匿名内部类(当然,也可以不用匿名,直接在接口中是实现内部类也是允许的)实现了S接口。你看,在接口中也存在着实现代码吧!

这确实很好,很强大,但是在一般的项目中,此类代码是严禁出现的,原因很简单:这是一种非常不好的编码习惯,接口是用来干什么的?接口是一个契约,不仅仅约束着实现,同时也是一个保证,保证提供的服务(常量和方法)是稳定的、可靠的,如果把实现代码写到接口中,那接口就绑定了可能变化的因素,这会导致实现不再稳定和可靠,是随时都可能被抛弃、被更改、被重构的。所以,接口中虽然可以有实现,但应避免使用。

昆明Java培训的老师提醒大家注意:接口中不能出现实现代码。

上一篇:java里不要随便设置随机种子
下一篇:静态变量一定要先声明后赋值

“因材施教,分级培优”十问十答

达内举办“2016授课讲师资格认证培训“,不断提升教学品质

达内牵手猿圈科技,打造技能测评、学习、就业一站式服务

毕业三年之内能转行学编程吗?

选择城市和中心
贵州省

广西省

海南省