接口将方法声明与实现分离,一个接口可以有多个实现类,一个类也可以实现多个接口。
定义接口
使用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
接口。
结语
关注微信公众号:小虎哥的技术博客
网友评论