接口将方法声明与实现分离,一个接口可以有多个实现类,一个类也可以实现多个接口。
定义接口
使用interface关键字。如public interface Life{}。
这里定义两个接口:Work(工作)接口,Life(生活)接口。
接口中的方法都是public的,并且可以省略不写,如void makeMoney();。
public interface Work {
// 赚钱
void makeMoney();
}
public interface Life {
// 玩游戏
void playGame();
// 默认方法(Java8)
default void sleep() {
System.out.println("睡觉");
}
// 静态方法(Java8)
static void print() {
System.out.println("静态方法");
}
}
- 接口可以有默认方法和静态方法,如
Life接口中的sleep()方法和print()方法。
实现类
实现接口用implements关键字,如class Student implements Life, Work{}
一个类实现一个接口必须要实现该接口所有的接口方法。
如下:Student学生类实现了Life和Work接口,需要实现playGame()和makeMoney()方法。学生要工作也要生活~
public class Student implements Life, Work {
@Override
public void playGame() {
System.out.println("学生也要玩游戏");
}
@Override
public void makeMoney() {
System.out.println("学生也要赚钱");
}
}
使用接口
public class Demo {
public static void main(String[] args) {
Student a = new Student();
a.makeMoney();
a.playGame();
a.sleep();
Life life = new Student();
life.playGame();
life.sleep();
Work work = new Student();
work.makeMoney();
}
}
- 可以用接口引用接收实现类对象,如
Life life = new Student();,因为Student实现了Life接口。 - 用接口调用方式时,如
life.playGame();编译器在执行的时候可以准确的找到具体对象的方法并执行(后期绑定/动态绑定)。
类关系图
如下是类关系图,可以看到实现类两个箭头指向两个接口,说明Student类实现了Work和Life接口。
结语
关注微信公众号:小虎哥的技术博客