接口只有规范:
定义的是一组规则,体现出:如果你是……则必须能的……思想
比如:
你是小偷就只能偷东西,是警察就要抓小偷,是飞机就要会飞……等等
接口的本质是契约,就像法律一样要好好遵守
- 接口自己无法写方法内容,
- 有专业的约束!约束和实现分离
也有人叫面向接口编程,因为项目做之前都要先完善接口
interface 定义接口的关键字
接口中所有定义都是抽象的
接口都要有实现类,一般用Impl代表实现类
public abstract
接口的示例代码(例子):
package home;
public interface UserService {
/*
* 定义接口增删改查姓名方法
*/
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
使用实体类接收接口:
特点:
必须重写接口里的所有方法
类可以实现接口 implements 接口
类实现接口的方法:class类型后 + implements + 接口名
实体类实现接口的示例代码(例子):
package home;
public class UserServiceImpl implements UserService{ //实现了接口:UserService
/*
* 必须重写接口里的所有方法
* 类可以实现接口 implements 接扣
* 类实现接口的方法:class类型后 + implements + 接口名
*/
//重写了接口中的4个方法
public void add(String name) {
}
public void delete(String name) {
}
public void query(String name) {
}
public void update(String name) {
}
}
extends只能单继承,接口可以多继承:
特点:
接口可以使用多个接口
接口的示例代码(例子):
创建第二个接口(Time接口,第二个接口)
package home;
public interface TimeService {
//随便定义的时间方法
void timer();
}
User实现多个接口的实体类:(实现User和Time2个接口)
package home;
public class UserServiceImpl implements UserService,TimeService{
//接了一个User接口,一个Time接口,并且重写2个接口内的方法
/*
* 必须重写接口里的所有方法
* 类可以实现接口 implements 接扣
* 类实现接口的方法:class类型后 + implements + 接口名
*/
//User接口内的方法,User姓名的增删改查方法
public void add(String name) {
}
public void delete(String name) {
}
public void query(String name) {
}
public void update(String name) {
}
//Time接口内的方法
public void timer() {
}
}
接口定义的属性都是常量(但是一般不用)
不在接口内定义值
package home;
public interface UserService {
//public修饰让所有人能访问,static,他是常量,用final修饰的 ,静态的常量(一般不会用这种方式定义)
public static final int AGE = 15;
/*
* 定义接口增删改查姓名方法
*/
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
总结:
作用:
- 约束
- 定义一些方法,让不同的人实现(比如10个员工,用一个接口,但是有10种不同的工作方式)
- public abstract
- public static final
- 接口不能被实例化~,接口中没有构造方法~
- implements可以实现多个接口
- 必须要重写接口中的方法~