做个笔记,interface定义接口,所有的方法为抽象的,不需要内容,否则会报错误:Abstract methods do not specify a body
实现类是针对接口来讲的,实现类就是实现接口中约定的内容。
意思是说,接口中定义规范,实现类来确定规范如何运行的。比如接口定义一个Person接口,定义了一个eat方法,这个吃的方法是空的。那需要一个实现类比如ZhangSan类实现了Person接口,就必须要给定eat方法的具体实现,说明张三是如何吃的。
接口实现
类使用implements
关键字实现接口。在类声明中,implements
关键字放在class
声明后面。接口支持多重继承,即一个类可以同时实现多个接口。
class Cat implements Animal {
public void eat() {
System.out.println("eat");
}
public void sleep() {
System.out.println("sleep");
}
}
类需要对接口中的每一个方法都给出实现。
我们可以使用接口类型来声明一个变量,那么这个变量可以引用到一个实现该接口的对象。比如:
讲集合的时候,我们说过ArrayList
是List
接口的实现,HashMap
是Map
接口的实现,这回你应该明白了吧。通过接口来申明变量,可以让程序更具有扩展性,因为将来我们更方便替换接口的实现。
比如PostRepository
的getAll
方法可以返回List<Post>
,而不需要指定为具体的ArrayList<Post>
。这样将来如果我们希望返回LinkedList<Post>
的时候也无需修改接口。
https://course.tianmaying.com/java-basic+abstract-class-and-interface#1