CoreJava Day10

接口—>interface—>类比抽象类—>接口不是类

  • 一种标准、规范;接口的使用者和实现者都必须遵循的约定、规范
    • 接口编译之后生成对应的 . class文件,文件名以接口名命名
    • 接口不能创建对象,但可以声明引用
    • 接口中没有静态代码块
    • 接口中的属性都是公开的、静态、常量(默认被public、static、final修饰)—>接口中属性需要在定义 时对其初始化
    • 接口中的方法默认公开、抽象的(public、abstract修饰)
    • 接口中没有***构造方法***
    • 接口不是类 ( 抽象类的进一步抽象 )
实现类—>implements
  • 实现类可以成为抽象类或者覆盖 ( 实现 ) 接口中所有的方法,注意覆盖时访问修饰符

  • 使用:接口引用指向子类对象—>多态

  • 一个接口可以定义多个实现类

  • 接口的继承

    • Java中接口之间是多继承—>一个接口可以直接继承多个父接口
    • Java中类和接口是多实现关系—>一个类可以同时实现多个接口
    • Java中的类实现多个接口的同时还可以继承一个父类,但是必须先继承,后定义实现
  • 接口的多继承使多态更加的复杂和多样性

  • 如果强转双方有一方为接口类型,编译一定通过

    • 若实际存储对象类型兼容于 ( 是不是它的一种 ) 要转换的类型,运行通过

    • 若实际存储对象类型不兼容于要转换的类型,则编译通过,但运行报错

      ---->java.lang.ClassCastException(类型转换异常)

  • 应用

    • 因为Java中的类之间是单继承,所以当父类中的功能需求不足以满足子类能力需求时,可以借助接口指定能力标准用于扩充子类的能力需求
    • 借助接口,将接口的使用者和实现者进行分离,同时利用多态,降低模块之间耦合度,从而实现代码弱耦合。
    • 依赖倒转原则:一个类和另一个类建立联系时,尽可能和其父类或者接口建立联系,避免和子类或是实现类直接建立联系
      • 提高代码的可维护性
      • 实现弱耦合---->借助接口将接口实现者和接口使用者进行分离,借助多态降低各模块之间耦合度
接口回调
  • 接口制定之后,接口的使用者已经被定义,编程人员根据接口的规则写出接口的实现
    • 实现类目的:作为参数传递,让接口的使用者进行调用
    • 一旦出现接口回调应用场景,编程人员只关注于如何根据接口的规则将实现写出,尽可能忽略应用者
高版本新增语法
  • jdk8.0 开始,接口可以定义默认方法—>接口中方法的default不是访问修饰符,只代表此方法可以有实现部分,且只限于接口使用。只能基于实现类的对象来访问。实现类可以覆盖默认方法
interface IA{
	public default 返回值类型 方法名(形参列表){	//public可以省略
    //可以写方法实现
  }
}
  • jdk8.0 开始,接口可以定义静态方法—>接口名 . 静态方法名() 调用—>访问权限默认public ,可以带方法实现部分—>可以被static继承覆盖,没有多态
interface IA{
	public static 返回值类型 方法名(形参列表){	//public可以省略
    //可以写方法实现
  }
}
  • jdk9.0 开始,接口可以定义私有方法—>私有方法可以带有实现部分—>私有化方法,外界不能使用—>通常为自己内部做组件应用—>不能被继承
interface IA{
	private 返回值类型 方法名(形参列表){
    //可以写方法实现
  }
}
接口分类—>应用需求
  • 常量接口:

    • 只有默认被public static final修饰的属性 ( 常量 ) ,没有定义任何方法的接口—>应用不广泛
  • 标记接口

    • 接口中没有定义任何内容 ( 没有属性也没有方法 ) —>空接口—>IO流的对象序列化时应用
  • 普通接口:

    • 对接口中的属性和方法没有要求—>应用最广泛
  • 函数式接口

    • 接口中有且只有一个抽象方法 ( 默认方法和静态方法不关注 ) —> 广泛应用在Lambda表达式中
  • 接口和抽象类

抽象类接口
关键字abstractinterface
属性实例变量、静态变量默认 public static final
方法抽象方法和非抽象方法默认 public abstract
jdk8.0:默认方法和静态方法
jdk9.0:私有方法
构造方法有,无参
继承单继承多继承 ( 接口和接口 )
多实现 ( 接口和类 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值