一、 接口的基础知识
1、为什么需要接口
为解决实际应用中,单一继承无法解决的问题
2、什么是接口
a) 基本概念?
接口是一种特殊的抽象类
接口是一种规范和标准,可以约束类的行为,是一些方法特征集合,但方法没有方法体
b) 基本语法
访问修饰符 interface 接口名{
//定义 方法(没有方法体),方法的访问修饰符默认为public
//定义 属性(默认是公共的静态的常量)
数据类型 常量名=值;
}
访问修饰符只能为public和默认的
c) 注意事项?
1.接口命名,接口字必须和文件名相同
2.接口中的方法没有方法体
3.接口中的属性名必须大写,且要赋值
4.接口不能实例化,没有构造方法
5.接口支持多重继承,一个接口可以继承多个接口,但不能继承类
6.接口中的方法,必须被所有实现接口的类具体实现
3、一个类如何实现接口
class 类名 implements 接口名{
//必须对接口中的方法,具体实现
}
4、一个类如何继承另外一个类,且同时实现一个接口【变相的让1个类实现多重继承】
class 子类名 extends 父类名 implements 接口1,…接口n{
}
5、接口的好处?
接口体现了约定和实现相分离的原则
弥补了Java类单一继承的不足,有利于代码的扩展和维护
6、 抽象类和接口的异同点?【常见笔试题】
相同点
- 1. 二者都不可以实例化
- 2. 二者都包含抽象方法,必须被非抽象的子类重写或实现
- 3. 二者都可以用来实现多态
不同点:
1、 抽象类只能单一继承,而接口可以支持多重继承
2、 抽象类中除抽象方法外,还可以有非抽象的方法;接口中的方法只能是抽象方法
3、 抽象类可以有构造方法,接口没有
4、 抽象类中的变量可以不赋值,接口中的变量必须赋值
5、 抽象类中可以定义静态方法,接口不可以
二、 面向接口编程
1、接口表示一种能力
2、接口表示一种约定
3、面向接口编程的好处?
a) 实现接口和实现的分离
b) 可以降低代码间的耦合性
c) 提高程序的可扩展性和可维护性