Java基础-interface 接口

Java基础-interface 接口

  • 接口的本质是规范和约束,就像人间的法律一样,制定好后大家都去遵守。

interface关键字

使用interface关键字定义的的类就是接口,与抽象类不同的是:普通类是通过abstract关键字而接口是使用interface关键字

public interface InterfaceTest {}

接口中的一般方法都是抽象方法,而实现了接口的类,就需要重写接口中抽象方法。

在Java中,继承是单继承的,但我们可以利用接口实现多继承。

在这里插入图片描述

  • 接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题
  • 接口中的变量隐式的使用 public static final 修饰,并且需要给出初始值。方法隐式的使用 public abstract 修饰(并且只能是 public ,如果是 private,procted,那么就编译报错)
  • 注意:接口没有构造方法。

Java8新特性

在JDK1.8以前,接口(interface)没有提供任何具体的实现,在《JAVA编程思想》中是这样描述的:“interface这个关键字产生了一个完全抽象的类,它根本就没有提供任何具体的实现。它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供了形式,而未提供任何具体实现”。

但是在jdk1.8时,这种限制被打破了,我们可以在接口中定义默认方法,接口的默认方法有助于在扩展系统功能的同时,不对现有的继承关系及类库产生很大的影响。例如在JDK1.8中,Java集合框架的Collection接口增加了stream()等默认方法,这些默认方法即增强了集合的功能,又能保证对低版本的JDK的兼容。

定义默认方法只需用使用default关键字即可定义,该方法可以由实现类进行调用。

定义静态方法的方式不变,使用static关键字即可定义,调用方式也可以直接由接口名.静态方法名即可

public interface InterfaceTest {
	default void test(){
 	  System.out.println("我是默认方法");
	}
     static void test01(){
      System.out.println("我是静态方法");
  	 }
}

当一个实现类实现了多个接口时,若两个或多个接口中都有相同的默认方法时,实现类必须重写默认方法。

在这里插入图片描述

可以看到,如果不重写接口类中的默认方法则编译器报错。

参考:Java8新特性之四:接口默认方法和静态方法 - 无恨之都 - 博客园 (cnblogs.com)

参考:java8中的default关键字_我是兴锅的博客-CSDN博客

抽象类与接口的区别

  1. 抽象类使用abstract声明,接口使用interface定义

  2. 接口没有构造器,抽象类有构造器

  3. 抽象类只能继承一次,但是可以实现多个接口

  4. 接口和抽象类必须实现其中所有的方法,抽象类中如果有未实现的抽象方法,那么子类也需要定义为抽象类。抽象类中可以有非抽象的方法

  5. 接口支持可以多继承,即一个接口可以extends多个接口;


    个人理解,若有错误,欢迎指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值