接口

接口

概述

  接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装的成员变量、构造方法和成员方法,那么接口的内部主要就是【封装了方法】,包含了抽象方法(JDK1.7及以前),默认方法和静态的方法(JDK1.8),私有方法(JDK1.9)

接口的定义:

   它与类的定义很相似,但是使用interface关键字,他也会被编译生成class文件,但一定要明确他并不是类,而是另外一种引用数据类型。

引用数据类型:类、数组、接口。

接口的使用:
  不能直接创建对象,但是可以被实现(implements关键字,类似于被继承),一个实现接口的类(可以看作是接口的子类),需要重写接口中的所有抽象方法,创建该类对象,就可以调用方法了。

接口的定义格式

public interface 接口名称 {
	// 抽象方法    为主
	// 默认方法
	// 常量
	// 静态方法
	// 私有方法(JDK1.9)
}

抽象方法:使用abstract关键字修饰,没有方法体内容,该方法主要是供子类使用的

默认方法:使用default关键字修饰的方法,不可省略关键字,供子类调用或者是子类重写。

静态方法:使用static关键字修饰的方法,供接口直接调用的。

私有方法:使用private关键字,共接口中的默认方法调用。

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

接口的多实现

   在继承体系中,一个类只能直接继承一个父类,而对于接口来说,一个类可以实现多个接口,这叫做接口的【多实现】。并且,一个类能直接继承一个父类,同时还可以实现多个接口。

实现格式:

public class ClassName extends 父类 implements 接口1,接口2,……{
	// 重写接口中的所有方法
	// 重写接口中的默认方法【可选】
	// 抽象方法重名
}

冲突

  • 实现的多个接口中 有重名的抽象方法
      实现类必须重写所有的抽象方法,如果抽象方法名有重名的,只需要重写一次即可

  • 实现的多个接口中 有重名的默认方法
      接口中,有多个默认方法时,实现类都可继承使用,如果默认方法有重名的,【必须重写一次】

  • 实现的多个接口中 有重名的静态方法
      接口中,如果存在同名的静态方法并不会冲突,原因时只能通过各自的接口名访问静态方法。

冲突(当一个类,即继承了一个父类,又同时实现了多个接口)

  • 当一个类,即继承了一个父类,又同时实现了多个接口,父类中的成员方法与接口当中的默认方法重名,子类就近选择执行父类的成员方法。

接口的继承

  • 接口之间使用extends关键字

  • 接口之间支持多继承

  • 子接口继承父接口的方法,如果父接口的默认方法有重名方法,那么子接口要重写一次

关于接口的其他成员

  • 接口中,无法定义成员变量,但是可以定义常量,因为值不可变,默认使用public static final 修饰的

  • 接口中,没有构造方法,不能创建对象

  • 接口当中,没有静态代码块

接口的优点

  • 设定了规则

  • 降低耦合性【高内聚,低耦合】

  • 扩展原有类的功能

接口与抽象类的区别:

相同点:

  • 都包含抽象方法,其子类都必须重写这些抽象方法

  • 都不能直接实例化对象‘

  • 都位于继承的顶端,用于被其他类实现或者继承

区别:

  • 抽象类里面可以包含普通成员方法,接口不能包含普通成员方法

  • 一个类只能直接继承一个父类(可以是抽象类),一个类也可以实现多个接口

  • 类与类之间只能单继承关系,接口与接口之间可以多继承

  • 抽象类可以定义普通的成员变量和常量,而接口只能定义常量public static final 修饰的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值