Java接口


接口 (英文:Interface)

概述:

接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口以interface关键字来声明。
类描述对象的属性和方法;接口则包含类要实现的方法
除非实现接口的类是抽象类,否则该类要实现接口中的所有方法

版本更新:

  • 接口在jdk8之前,接口中只能有抽象方法,
  • jdk8之后,接口中可以有默认方式和静态方法,jdk9之后可以有私有方法

抽象类与接口的相同点:

  • 不能实例化对象

抽象类与接口的区别(面试题):

  1. 构造方法:
    • 抽象类 :有构造方法。用于子类继承父类的时候给父类成员初始化。
    • 接口 : 没有构造方法
  2. 成员
    • 抽象类 :有变量,有常量;有具体的实现方法,有抽象方法
    • 接口 : 只有常量;jdk1.8前只能有抽象方法。jdk1.8后,可以有默认方法,静态方法,jdk1.9后可以有私有方法。
  3. 抽象概念
    • 抽象类 : 抽象类对类整体进行抽象,包括属性、行为,是对一种事物的抽象,即对类抽象
    • 接口 : 接口是对行为的抽象
  4. 设计层面
    • 抽象类 :抽象类作为很多子类的父类,它是一种模板式设计;抽象类加入新的具体方法时,那么所有的子类都继承到了这个新方法
    • 接口 :接口是一种行为规范,它是一种辐射式设计;接口加入新的抽象方法时,那么所有的子类都必须重写这个新方法

定义格式

//  接口:
public interface 类名{
    // 接口中只可定义常量,不可定义变量
    public static final 常量名;

    //   抽象方法
    public abstract void training();

    // 默认方法
    default void fun2() {
        //在jdk1.8后,接口中可以有默认方法,不常用
    }

    // 静态方法
    public static void fun3() {
        // 在jdk1.8后,接口中可以有静态方法,不常用
    }

    // 私有方法
    private void fun4() {
        //jdk1.9后,接口中可以放私有方法,不常用
    }
}

接口的继承与实现:

  • 接口无法被实例化,但是可以被实现
// 接口与接口可以多重继承,也可以多次继承
public interface 子接口名称 extends 父接口名称1,父接口名称2{}

// 类与接口可以多实现
public class 类名称 implements 接口名称1,接口名称2{}

instanceof

判断对象的类型

// 判断object属不属于class的类型
if(object instanceof class){
//是class类型为true
}else{
//不是class类型为false
}

抽象类和接口的应用场景

  • 拥有一些方法并且想有一些有默认实现,使用抽象类。
  • 实现多重继承,必须使用接口。由于Java不支持多继承,子类不能继承多个类,但可以实现多个接口。因此可以使用接口来解决。
  • 基本功能在不断改变,就需要使用抽象类。如果使用接口,那么就需要改变所有实现了该接口的类。

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录