美文网首页
java接口

java接口

作者: 还是那个没头脑 | 来源:发表于2020-04-08 00:29 被阅读0次

概念

接口就是多个类的公共规范。
接口是一种引用数据类型,最重要的内容就是其中的 抽象方法。

接口的定义

public interface 接口名 {
    // 接口内容
}

备注:换成了关键字interface之后,编译生成的字节码文件仍然是: .java -- > .class。

jdk7:
1.常量(被static final修饰的变量)
2.抽象方法(被abstract修饰的抽象方法-->不写abstract,也有)
jdk8:
3.默认方法
4.静态方法
jdk9:
5.私有方法

接口抽象方法的定义及使用

定义:public abstract 返回值类型 方法名称(参数);
           即使不写abstatract,默认也有

使用:
        1.创建一个实现类,实现这个接口 --> implement
        2.重写接口中的抽象方法,去实现这个方法
        3.创建实现类对象(接口不能创建对象)
        4.调用重写的方法

接口默认方法的定义以及使用

定义:修饰符 default 返回值类型 方法名(参数){
           方法体
           返回值
           }

范例:

public default void show3() { 
}

使用:
        1.创建实现类,实现接口
        2.不用重写默认方法
        3.创建实现类对象,调用接口中的默认方法

注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
  • public可以省略,default不能省略

使用场景:添加新功能

接口静态方法

静态方法: static --> 静态方法被调用的时候,直接用类名调用

public static 返回值类型 方法名(参数){
      方法体
      返回值
}

范例:

public static  void show() { 
}

注意事项:

  • 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
  • public可以省略,static不能省略

接口私有方法

私有方法产生原因:
Java 9中新增了带方法体的私有方法,这其实在Java 8中就埋下了伏笔:Java 8允许在接口中定义带方法体的 默认方法和静态方法。这样可能就会引发一个问题:当两个默认方法或者静态方法中包含一段相同的代码实 现时,程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,因此用 私有给隐藏起来,这就是Java 9增加私有方法的必然性。

定义格式
格式1
private 返回值类型 方法名(参数列表) { }
范例1

private void show() {
}

格式2
private static 返回值类型 方法名(参数列表) { }
范例2

private static void method() {
}

注意事项:

  • 默认方法可以调用私有的静态方法和非静态方法
  • 静态方法只能调用私有的静态方法

接口中的成员变量(常量)

定义格式: 修饰符 static final 数据类型 变量名 = 值
注意:不写static final 默认也有

使用:接口名直接调用

注意事项:
        1.都是static final修饰的,不写也有
        2.需要我们手动复制
        3.不能二次复制
        4.一般变量名都是大写(规范)

接口的多实现

类不能多继承,只支持单继承

接口可以多实现 --> 一个实现类可以同时实现多个接口

继承一个类的同时实现多个接口 -->子类 extends 父类 imlements 接口1,接口2

注意事项:
        1.一个类继承一个父类的同时实现一个或者多个接口,要重写所有的抽象方法
        2.如果两个接口中有重名的抽象方法,那么我们就可以重写一个
        3.如果两个接口中有重名的默认方法,那么我们必须重写一个
        4.如果接口中有和父类的方法一样的默认方法,那么我们先执行父类的

接口不仅能多实现,还可以多继承,但是类不能多继承

注意事项:父接口中如果有重名的默认方法,那么子接口中要重写一次

接口和抽象类的区别以及接口的一般使用场景

接口-->一般只写方法 作为一个标准-->内容单一

抽象类-->一般作为顶级的父类 -->拥有抽象方法 普通方法 构造方法 成员变量

接口:在工作中,作为一个功能的大集合来用-->接口中都是方法(一般都是抽象方法)

相关文章

网友评论

      本文标题:java接口

      本文链接:https://www.haomeiwen.com/subject/ntbnphtx.html