接口是什么
接口是指的是行为的标准,用于规范对象的行为。
为什么接口可以实现代码的解耦
Java集合的ArrayList与LinkedList都实现了List接口,都是实现了add,remove,contain等方法,在使用集合工具类Collections.sort(List<T> list)时不需要知道和指定传入的list是ArrayList还是LinkedList,也就忽略了上层代码的实现,从而实现代码的解耦。
什么时候该用接口,什么时候该用抽象类
- 接口是定义对象行为的标准,用于规范对象的行为,其实就是根据行为抽象出方法来定义。
- 抽象类是用于描述对象,抽取共同属性,抽象类就像是实现类的子集。
例如鸟和蚊子都会飞,那么鸟和蚊子这两个类都可以实现一个共同接口,该接口具有fly()方法表示他们都会飞,但他们并不是同一种类型的生物,而它们的共同属性是他们都有翅膀,所以可以定义一个抽象类抽取“翅膀”的属性。
在Java中抽象类与接口的区别
- 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
- 接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
- 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
- 接口方法默认修饰符是public,抽象方法可以有public、protected和default这些修饰符(抽象方法就是为了被重写所以不能使用private关键字修饰!)。
- 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范
网友评论