interface:是抽象类的变体,。在接口中,所有方法都是抽象的。如:interface M{
int num=3;
void eat();
}
理解为接口是一个特殊的抽象类,所以接口不能创建对象,且接口没有构造方法,
但可以声明一个接口类型的引用(m是接口类型实现类对象,如:M m=new N();)
接口存在的意义是被子类实现,如果不想让子类也抽象,
就要实现接口里面所有的抽象方法,实现过程中注意访问权限;
用 implements 关键字实现接口,如:class N implements M{
public void eat(){...}
}
接口里面的常量默认都是public static final的;
接口里面的方法默认都是public abstract的。
接口本身支持多继承,继承了父接口里功能的定义,如,interface A extends B,C,D{} //A,B,C,D都是接口;
类可以同时继承一个父类和实现接口(或多个接口)。
如:class AA extends BB implements CC,DD,EE{}//AA,BB 是类,CC,DD,EE是接口;
作用:1,用接口去实现多继承,接口是对类的共性进行再次抽象,抽象出类的次要类型。
如:蜘蛛侠,拥有人和蜘蛛的属性,但主要类型是人,次要类型(接口)是蜘蛛,
因为接口是次要类型,所以在类关系里不占一个节点,不会破坏类层次关系的树状结构,
2,标准(保证弱耦合):一个接口就是一个标准(里面的属性不能改变,只定义了功能,
但没有被实现), 接口将标准的制定者,标准的实现者以及标准的使用者分离开,
降低实现者和使用者的耦合。接口是java里一种重要的降低耦合的工具;
接口可以屏蔽不同实现类的差异,
当底层的实现类更换后,不会对上层的使用者产生影响,体现在参数和返回值。
写程序时,应该先写实现者再写使用者,如:Bank.java是实现者,View.java是使用者,
但是有了接口之后,就可以用接口回调的功能;
接口回调:先定义接口,然后写使用者和实现者的顺序随便(一般是先写使用者,
后写实现者);利用参数把实现者传给使用者(即:实现者是使用者的属性),
使用者利用接口调用实现者相应的功能。
**接口和抽象类的区别 1一个类可以implements多个接口,而只能extends一个抽象类
2,一个抽象类可以实现部分的方法,而接口都是抽象的方法和属性 |
|