Java基础---接口Interface

一、接口

1.接口是什么呢?
接口:就是一种公共规范标准,在java中接口就是用来封装方法的
接口的特点:

1.接口是一种引用数据类型
2.接口中只能定义常量和方法(抽象方法,默认方法,静态方法,私有方法(jdk9))
3.接口中不能定义成员变量和构造方法
4.接口不能创建对象,只能通过其实现类来使用
5.接口中,没有静态代码块

2.定义接口的格式

public interface 接口名称 {
     //常量
    // 抽象方法
    // 默认方法
    // 静态方法
    // 私有方法
}

如何实现接口:

实现接口:
1.创建一个类
2.实现该接口
            public class 类名 implements 接口名{
}

接口中的成员:

  • 常量:

    默认修饰符:public static final
    1.接口中的常量可以供接口直接使用
    2.接口中的常量可以供子类和子类对象使用
    final: 关键字,表示终态的意思,如果修饰变量,该变量就变成常量
    常量:使用public static final修饰的
    含有抽象方法

如何在接口中定义抽象方法和使用抽象方法:

接口中定义抽象方法:
public abstract 返回值类型 方法名(形参);
返回值类型 方法名(形参);

如何使用抽象方法:

接口中的抽象方法注意就是供子类(实现类)重写的

注意:

接口的实现类如果是普通类,那么必须重写抽象类中的所有抽象方法
接口的实现类如果是抽象类,那么可以不用重写抽象类中的抽象方法
  • 含有默认方法
    默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。
    默认方法:需要加default
    格式:
    public default 返回值类型 方法名(形参){

    }

    1.接口中的默认方法可以供子类对象调用
    2.接口中的默认方法可以供子类重写,但是重写的时候不需要加 default
    接口中默认方法的使用:在实现类中使用或者实现类对象来使用

  • 含有静态方法
    静态方法:使用 static 修饰,供接口直接调用。
    public static 返回值类型 方法名(参数列表){

    }

    静态方法只能供接口直接使用,实现类不能使用
    接口中静态方法的使用:只能供接口直接使用

  • 含有私有方法
    私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。

    private 返回值类型 方法名(参数列表){

    }

  • 私有静态方法
    private static 返回值类型 方法名(参数列表){

    }

    私有方法只能在接口中直接使用
    私有非静态方法: 供默认方法使用,私有非静态方法直接使用
    私有静态方法: 供默认方法使用,静态方法,私有方法直接使用

3.基本的实现
实现: 类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements关键字。

非抽象子类实现接口:

1. 必须重写接口中所有抽象方法。
2. 继承了接口的默认方法,即可以直接调用,也可以重写。

实现格式:

class 类名 implements 接口名 {
    // 重写接口中抽象方法【必须】
      // 重写接口中默认方法【可选】
}

抽象方法的使用

必须全部实现。

默认方法的使用

可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。

静态方法的使用

静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用。

私有方法的使用

私有方法:只有默认方法可以调用。
私有静态方法:默认方法和静态方法可以调用。

4.接口和类之间的关系接口和类之间的关系:实现关系
单实现:一个类实现一个接口
多实现:一个类实现多个接口

格式:
     public class 类名 implements 接口1,接口2,...{

}

注意:

1.如果多个接口中有同名的抽象方法,那么实现类只需要实现一次即可
2.如果多个接口中有同名的默认方法,那么实现类必须重写一次,并且要去掉default关键字
3.如果多个接口中有同名的静态方法,那么实现类无须理会,因为接口中的静态方法只供接口直接使用
4.如果多个接口中有同名的私有方法,那么实现类无须理会,因为接口中的私有方法只能在本接口中使用

5.接口和接口之间的关系
接口和接口之间的关系: 继承关系

单继承:一个接口继承一个接口
多继承:一个接口同时继承多个接口
多层继承:一个接口继承另一个接口,而另一个接口又继承另一个接口

单继承:

 public interface 接口A extends 接口B{

 }

接口A: 子接口
接口B: 父接口
多继承:

public interface 接口A extends 接口B,接口C,...{

}

接口A: 子接口
接口B\C…: 父接口

注意1:

1.如果多个父接口中有同名的抽象方法,那么实现类只需要实现一次即可
2.如果多个父接口中有同名的默认方法,那么子接口必须重写默认方法,必须要加default关键字
3.如果多个父接口中有同名的静态方法,那么无须理会,因为静态方法只能供接口使用
4.如果多个父接口中有同名的私有方法,那么无须理会,因为私有方法只能本接口使用

注意2:

子接口重写父接口的默认方法,必须加default关键字
实现类重写接口中的默认方法,必须去掉default关键字

继承与实现存在优先级的问题
优先级的问题
一个类既可以继承另一个类,也可以实现多个接口

格式:
public class 类名 extends 父类名 implements 接口名1,接口名2,...{

}

注意:

1.如果接口和父类中有同名的默认方法,优先调用父类的默认方法
2.如果接口和父类中有同名的抽象方法,那么子类必须重写一次抽象方法

普通类: 成员变量,构造方法,成员方法,静态代码块
抽象类: 成员变量,构造方法,成员方法,静态代码块,抽象方法 —> 不能直接创建对象
接口: 常量,默认方法,静态方法,私有方法,抽象方法 —> 不能直接创建对象

一个类只能继承一个父类,但是一个类可以实现多个接口
一般父类使用抽象类,一般一个类需要扩展功能就实现接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值