• 技术文章 >Java >Java入门

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

    青灯夜游青灯夜游2023-01-04 13:04:09原创131

    java接口的修饰符可以是abstract和final。接口可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成;接口的方法默认是public abstract;而接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量),所以接口的属性默认是public static final 常量,且必须赋初值。

    本教程操作环境:windows7系统、java8版、DELL G3电脑。

    抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更彻底,则可以提炼出一种更加特殊的“抽象类”——接口(Interface)。接口是 Java 中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。

    定义接口

    Java 接口的定义方式与类基本相同,不过接口定义使用的关键字是 interface,接口定义的语法格式如下:

    [public] interface interface_name [extends interface1_name[, interface2_name,…]] {
        // 接口体,其中可以包含定义常量和声明方法
        [public] [static] [final] type constant_name = value;    // 定义常量
        [public] [abstract] returnType method_name(parameter_list);    // 声明方法
    }

    对以上语法的说明如下:

    注意:一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。

    java接口的修饰符

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

    (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 常量,且必须赋初值。

    注意:final和abstract不能同时出现。

    更多编程相关知识,请访问:编程教学!!

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java
    上一篇:java中值传递和引用传递的区别是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 详细介绍Java正则表达式之单字符匹配和预定义字符• java有几种线程状态• Java数据结构之单链表与OJ题• java中private是什么意思• java final关键字的作用是什么• 实例详解Java顺序表和链表
    1/1

    PHP中文网