基本介绍
接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。
语法:
interface 接口名{
//属性
//方法 //可以有三种方法 //1.抽象方法 2.默认实现方法 3.静态方法
}
//使用接口
class 类名 implements 接口{
//自己的属性
//自己的方法
//必须实现的接口的抽象方法
}
在JDK1.7 接口的所以方法都是抽象方法
在JDK8.0后接口里面可以有静态方法,默认方法。默认方法就是普通方法
细节:
1.接口不能被实例化对象
2.接口的所有方法是public的,接口的抽象方法可以不用abstract修饰
3.一个普通类实现接口,就必须要把接口类中的方法都实现
4.抽象类实现接口,可以不用实现接口方法,抽象类是不能有具体方法的
5.一个类可以同时实现多个接口,它同继承不一样继承只能继承一个类
6.接口中的属性都是final修饰的,而且是public static final 修饰的,它定义的属性都是静态的,只能是public的
7.接口的访问形式。:接口名.属性名
8.接口是不能继承其他类,但可以继承多个其他接口
9.接口的修饰符 只能是 public 和默认 和类的修饰符一样
接口Vs继承
1.接口和继承解决的问题是不一样的
继承的价值:解决代码的复用性和可维护性
接口的价值:设计,可以设计好各种规范,让其他类去实现这些方法,更加灵活
2.接口比继承更加灵活
继承满足is -a的关系,而继承只需要满足like -a的关系
3.接口在一定程度上实现代码的解耦【接口规范性+动态绑定机制】
接口的多态特性
1.
多态参数
接口引用可以实例实现接口的类型
interface A{}
class B implements A{}
class C implements A{}
public static void main(String[] args){
A a = new B();
A a = new C();
}
2.多态数组
类型的向上转型与向下转型
3.多态传递
就是一个普通类继承一个类然后实现一个接口,然后实现的接口又继承了另一个接口此时在实例化对象的时候会存在,类似于儿子-父亲-爷爷的关系链
`interface PH{}
interface HI extends PH{}
class A implements HI{}
public static void main(String[] args){
HI hi = new A();
PH ph = new A();
}