当前位置:网站首页 > Java基础 > 正文

java基础接口类



Author : Cyan_RA9
Catalog : 
一、概述
    1.介绍
    2.定义
二、特点
    1.接口成员变量的特点
    2.接口成员方法的特点
    3.接口构造方法的特点
    4.接口创建对象的特点
    5.接口继承关系的特点

一、概述

    1.介绍 : 

         接口技术用于描述类具有什么功能,但并不给出具体实现,当某个类要使用接口时,再去实现接口中的这些方法。类需要遵从接口中描述的统一规则进行定义,所以,接口是对外提供的一组规则,标准。

    2.定义 : 

     ①定义接口要用到 关键字interface,格式如下 : 
         interface 接口名 {
        } 
     类和接口之间不再是继承关系,而是 实现关系,用 implements关键字表示。如下 : 
         class 类名 implements 接口名 {
        }
    Δ需要注意的是: 与类的定义类似,接口的访问权限修饰符只能是public或者默认。 
     IDEA中定义接口的步骤如下 : 
     1>先像平时创建类一样正常点击New——>Java Class;如下图所示 : 

         2>然后在弹出的窗口中选择Interface,输入接口名,回车即可。如下图所示 : 

二、特点 

        1.接口成员变量的特点 : 

        Δ接口中没有成员变量,只有公有静态常量。

        java基础接口类即默认情况下属性前都会有 public static final 这三个关键字修饰。如下 : 

        public static final 数据类型 常量名 = 常量值;

        Δ还记得我们在final关键字详解中讲到的——关于final修饰属性的初始化问题吗?

        当时,我们说,final修饰的属性必须进行初始化,而对于公有静态常量(public static final),初始化的途径只有两条——①定义时显式初始化;②在静态代码块中初始化。但是很遗憾,接口中不允许存在代码块,而且接口没有构造方法。因此,这就要求我们在接口中定义公有静态常量时,必须在定义时就赋初值。否则IDEA报错。

                演示 : 

                我们以DemoInterface接口为演示接口,在该接口中定义i变量,并定义Test类作为测试类,如下所示 : 

                可以看到,IDEA对于i变量前的三个关键字均作了灰色处理,表明这三个修饰符是默认的,你写不写它都在!在测试类中,我们尝试更改i变量的值,IDEA会马上报错,如下图所示 : 

                而可通过接口名来调用i变量也体现出static关键字的存在。

        2.接口成员方法的特点 :

        在JDK7.0版本及其之前版本中,接口中仅支持公有的抽象方法

                public abstract 返回值类型 方法名();  

        Δ事实上,接口中的方法默认就是公有抽象方法,因此在接口中定义抽象方法时,可以省略掉abstract关键字

        从JDK8.0开始,接口中可以由默认方法静态方法

                默认方法——public default 返回值类型 方法名() {

                }

                静态方法——public static 返回值类型 方法名() {

                }

        Δ需要注意的是,想定义默认方法必须在前面添加default关键字,因为接口中的方法如果你什么都不写,默认是公有的抽象的方法。默认方法可以有方法体,且不需要实现类去实现,其实就是我们平时见到的普通的成员方法。但是默认方法是可以被实现类重写的。default关键字只能在接口中使用,就算实现类要重写默认方法,实现类中重写后的方法也不能添加default修饰符,不然IDEA报错。

        JDK9.0以后,接口中可以有私有方法 :

                private 返回值类型 方法名() {

                }

                演示 : 

                我们以Demo2接口为演示接口,以Imple类作为Demo2接口的实现类,最后以Test2类作为测试类,代码如下 : 

 

        3.接口构造方法的特点 : 

        接口存在的目的是为了规范类,因此接口也不可以被实例化。接口中不允许存在代码块,也没有需要初始化的成员,因此接口没有构造方法(构造器)。在接口中定义构造器IDEA会直接报错,如下图所示: 

        4.接口创建对象的特点 : 

        ①接口不能被实例化 :

                只能通过多态的方式实例化“子类”对象(这里的“子类”指的是接口的实现类

        ②接口的子类(实现类) : 

                可以是抽象类,也可以是普通类
                对于抽象实现类,可以不用实现接口的所有方法,因为抽象类本身容许存在抽象方法,语法上是通过的。

                对于普通实现类,要求实现接口的所有抽象方法。

                演示 : 

                我们以Demo3接口为演示接口,在接口中定义三个抽象方法greet(), exercise(), study();以Imple1类和Imple2类作为Demo2接口的实现类,令Imple1类为抽象类,不实现Demo3接口中的抽象方法;令Imple2类为非抽象类,实现Demo3接口中的所有抽象方法。最后以Test3类作为测试类,代码如下

 

        5.接口继承关系的特点 : 

        ①类和接口之间的关系 : 

        类与接口是实现关系,支持“多实现”,即一个类可实现多个接口

        ②接口与接口之间的关系 : 

        接口与接口是继承关系,java 支持接口的多继承,即一个接口可以同时继承多个接口,格式如下 : 

        接口 extends 接口1,接口2,接口3...

        ③继承和实现的区别 : 

        继承体现的是“is a”的关系,父类中定义共性内容。

        实现体现的是“like a”的关系,父接口中定义扩展内容。

        PS : 接口的“实现”可以看作是Java中对“单继承机制”的一个补充完善。接口可以在一定程度上实现代码解耦(接口规范性 + 动态绑定)。总的来看,接口的实现比类的继承更为灵活

  • 上一篇: java语法基础75
  • 下一篇: java 基础 知乎
  • 版权声明


    相关文章:

  • java语法基础752024-10-25 08:02:00
  • java基础书籍ISBN码2024-10-25 08:02:00
  • java1-3基础入门2024-10-25 08:02:00
  • 小学基础能学java吗2024-10-25 08:02:00
  • 程序设计基础c语言和java2024-10-25 08:02:00
  • java 基础 知乎2024-10-25 08:02:00
  • java零基础班和和就业班2024-10-25 08:02:00
  • java0基础动力节点2024-10-25 08:02:00
  • 游戏编程基础学的是java吗2024-10-25 08:02:00
  • 零基础能学好Java嘛2024-10-25 08:02:00