接口是比抽象类还抽象的”抽象类“,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离
接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范
从接口的实现者角度看,接口定义了可以向外部提供的服务
从接口的调用者角度看,接口定义了实现者能提供哪些服务
接口是两个模块之间通信的标准,通信的规范。如果能把要设计的模块之间的接口定义好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。
接口和实现类不是父子关系,是实现规则的关系
面向对象的精髓,是对对象的抽象,最能体现这一点的就是接口
普通类:只有具体实现
抽象类:只有规范。自己无法写方法 专业的约束 约束和实现分离
接口技术规范。定义的是一组规则。
接口的本质是契约,就像我们人间的法律一样。指定好后大家都遵守
OO的精髓是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式只对具备了对象能力的语言(比如c++\java\c#等),就是因为设计模式所研究的,实际就是如何合理的去抽象
interface 定义的关键字,接口都需要有实现类
声明格式:[访问修饰符] interface 接口名 [extends 父接口1,父接口2]{
常量定义;
方法定义
}
定义接口的详细说明:
1.访问修饰符:只能说public或默认
2.接口名:和类名采用相同命名机制
3.extends:接口可以多继承
4.常量:接口中的属性只能是常量,总是:public static final修饰。不写也是
5.方法:接口中的方法只能是:public abstract。省略的话也是public abstract
要点:
1.子类通过implements来实现接口中的规范
2.接口不能创建实例,但是可用于声明引用变量类型
3.一个类实现了接口,必须实现接口中所有的方法,而且这些方法只能是public的
4.JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法
接口也可以继承,而且可以多继承 比如C接口继承A,B接口 但是实施C接口的类要全部实施A、B接口
面向接口编程是面向对象编程的一部分
为什么需要面向接口编程?软件设计中最难处理的就是需求的的复杂变化。而接口就是规范,是项目中最稳定的东西。
接口作用
1.约束
2.定义一些方法,让不同的人实现
3.public abstract
4.public static final
5.接口不能被实例化 因为接口中没有构造方法
6.接口可以实现多继承 implements
7.实现接口时必须重写接口中的方法
类可以实现接口 implements 接口
实现了接口的类,就需要重写接口中的方法
多继承 利用接口实现多继承
package kuang.oop.Demo09;
public interface UserService {
int AGE=99; //是常量 public static final
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package kuang.oop.Demo09;
//抽象类:extends~
//类可以实现接口 implements 接口
//实现了接口的类,就需要重写接口中的方法
//多继承 利用接口实现多继承
public class UserServiceImpl implements UserService,TimeService{
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
@Override
public void timer() {
}
}