接口是什么?
Java中的接口定义了一个引用类型来创建抽象概念。 接口由类实现,它是用来提供概念的实现。
在Java 8之前,一个接口只能包含抽象方法。 Java 8允许接口具有实现的静态和默认方法。
接口通过抽象概念定义不相关类之间的关系。例如,可以创建一个Person类来表示一个人,也可以创建一个Dog类来表示一只狗。
人和狗都可以走路。这里的走路是一个抽象的概念。狗可以走路,人也是走路。
这里可以创建一个名为Walkable的接口来表示走路这个概念。然后在Person类和Dog类中各自实现Walkable概念(如:实现怎么走路)。 Person类实现了Walkable接口以人的方式走路(如:用两条腿走路)。 Dog类可以实现Walkable接口以狗的方式走路(如:用四条腿走路)。
示例-1
下面将使用一个例子来说明为什么需要接口。
假设Person类有一个walk()方法。
在相同的包下创建一个接口文件 - Walkable.java 并使用以下代码 -
在相同的包下创建一个主类 -Main.java 并使用以下代码 –
类可以在其声明中使用关键字implements实现一个或多个接口。通过实现一个接口,类保证它将为接口中声明的所有方法提供一个实现,或者类将自己声明为抽象。
如果一个类实现了Walkable接口,它必须提供walk()方法的具体实现。
像类一样,接口定义了一个新的引用类型。当定义一个新的接口(例如,Walkable)时,定义一个新的参考接口类型。
以下声明有效:
Walkable w; // w is a reference variable of type Walkable
但是不能创建接口类型的对象,因为接口是定义抽象概念。 以下代码无效,编译会出错:
new Walkable(); // A compile-time error
只能为类类型创建对象,但是可以使用一个接口类型变量来引用那些类实现该接口的任何对象。
如:Person和Dog类都实现了Walkable接口,所以Walkable类型的引用变量可以引用这两个类的对象。如下代码是没有问题的:
可以使用它的引用类型变量访问接口的任何成员。 由于Walkable接口只有一个成员,也就是walk()方法,所以这里可以编写如下代码:
当调用w1的walk()方法时,它调用Person对象的walk()方法,因为w1指的是Person对象。当调用w2的walk()方法时,它调用Dog对象的walk()方法,因为w2指的是Dog对象。
当使用接口类型的引用变量调用方法时,它将调用它所引用的对象的方法。
尚学堂全新课程IT百战程序员,最全最系统的视频网站课程,共有6000集视频,包含java、大数据、前端等技术,更重要的是还有老师督促、跟进。
本文暂时没有评论,来添加一个吧(●'◡'●)