• 技术文章 >Java >java教程

    java接口的修饰符可以为什么

    青灯夜游青灯夜游2020-10-21 16:21:45原创5043

    java接口的修饰符可以为“public abstract”。接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是public类型;接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是abstract方法。

    java接口的修饰符,默认是public abstract,因为接口要被实现。

    接口很重要,为了说明情况,这里稍微啰嗦点:

    (1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

    (2)接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

    (3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;

    (4)接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

    (5) 接口中不可以定义变量?如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过 实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口 A 中有一个public 访问权限的静态变量 a。按照 Java 的语义,我们可以不通过实现接口的对象来访问变量 a,通过 A.a = xxx; 就可以改变接口中的变量 a 的值了。正如抽象类中是可以这样做的,那么实现接口 A 的所有对象也都会自动拥有这一改变后的 a 的值了,也就是说一个地方改变了 a,所有这些对象中 a 的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中 不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统 一的属性。

    通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现 implements)开放,接口是对开闭原则的一种体现。

    所以:

    **接口的方法默认是public abstract;

    接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。**

    以上就是java接口的修饰符可以为什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:java 接口
    上一篇:java输入输出语句是什么 下一篇:jstack命令详解
    大前端线上培训班

    相关文章推荐

    • java中文乱码怎么转换• Java中boolean类型占用多少个字节• java注释的三种形式分别是什么• 利用java实现一个简单的贪吃蛇小游戏• java程序的运行环境简称为什么?• java如何调用另一个类的方法• javascript警告框怎么消除

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网