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)默认方法可以被继承和重写,但静态方法不可以被实现类继承;

接口中的默认方法:

接口默认方法的“类优先”原则

若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了一个同名的方法时

选择父类中的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。

接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法),那么实现类必须覆盖该方法来解决冲突

posted @ 2019-10-02 15:21  张泽  阅读(180)  评论(0编辑  收藏  举报