Java 接口
Posted zhangze-lifetime
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 接口相关的知识,希望对你有一定的参考价值。
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
本质上还是多态:
1)多态的3大用法:
1>接口引用指向实现类对象:
2>接口引用作为方法的形参,来接收不同的实现类对象;
3>接口类型作为方法的返回值类型,返回不同的实现类对象;
1、接口,只包含常量和抽象方法;
接口的变量,默认是:public static final(可以省略);
接口的方法,默认是:public abstract (可以省略);
2、接口的使用:
Interface 关键字;
A)接口类型的引用变量指向实现类对象;
B)调用的方法必须是接口里定义,实现类实现的方法;
C)实际指向的是哪个实现类对象,执行的就是哪个对象的方法;
D)一个类即能继承父类,又能实现接口;
E)一个类可以同时实现多个接口;
F)一个接口继承另一个接口;
G)一个接口同时继承多个接口;
3、接口的好处:
A)可以实现多继承;
B)运用多态,面向接口编程;
4、类和接口的区别:
类和接口是同一级别的;
类是“is a”语义,是一种,子类必须是父类的一种;
接口是“has a”语义,有一种,实现类实现接口,实现类拥有一种接口里定义的功能;
5、抽象类和接口的区别:
抽象类是类,“is a”语义,接口是”has a”语义;
抽象类是用来继承的,接口是用来实现的;
抽象类有构造方法,接口没有构造方法;
都不能创建自身的对象,都可以创建子类或者实现类的对象(多态);
目的:设计和功能实现进行分离;功能实现的管理者,不关心功能的具体的实现;
Java 8中关于接口的改进:
Java 8中,你可以为接口添加静态方法和默认方法。从技术角度来说,这是完全合法的,只是它看起来违反了接口作为一个抽象定义的理念。
静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。我们经常在相互一起使用的类中使用静态方法。你可以在标准库中找到像Collection/Collections或者Path/Paths这样成对的接口和类。
默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。我们在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性。
比如:java 8 API中对Collection、List、Comparator等接口提供了丰富的默认方法。
特点:
1)静态方法和默认方法的访问修饰符默认是public,可以省略;
2)默认方法可以被继承和重写,但静态方法不可以被实现类继承;
接口中的默认方法:
接口默认方法的“类优先”原则
若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了一个同名的方法时
选择父类中的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。
接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法),那么实现类必须覆盖该方法来解决冲突
以上是关于Java 接口的主要内容,如果未能解决你的问题,请参考以下文章