接口
对比:
- 普通类:只有具体实现
- 抽象类:具体实现和规范(抽象方法)都有
- 接口:只有规范!自己无法写方法!专业的约束(约束和实现分离):面向接口编程~
接口的本质是契约。
- 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。(如果你是天使,则必须能飞...)
- 就像我们人间的法律一样,制定好后大家都遵守
- 声明类的关键字是class。声明接口的关键字是interface
//interface 接口关键字
//接口都需要有实现类
public interface UserService {
//接口中的所有定义都是抽象的 public abstract(默认是抽象的)
//定义增删改查
void add(String name);//实际是public abstract void add(String name);
void delete(String name);
void update(String name);
void query(String name);
//接口里定义的属性都是常量,一般不会这样做
int AGE = 99;//实际是public static final int AGE = 99;
}
public interface TimeService {
void timer();
}
实现类
- 实现类我们会以接口名+Impl命名
- 通过implements关键字实现接口
//类 可以实现接口 implements 接口
//实现了接口的类,就需要重写接口中的方法
//多继承~利用接口实现多继承(两个接口类:UerService,TimeService)
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() {//TimeService里的
}
}
作用:
- 约束
- 定义一些方法,让不同的人实现
- public abstract
- public static final
- 接口不能被实例化,接口中没有构造方法
- implements可以实现多个接口
- 必须重写接口中的方法
//接口
public interface Usb {
//服务
void service();
}
//实现类
public class UsbImpl implements Usb{
@Override
public void service() {
System.out.println("链接电脑成功");
}
}
public class TestUsb {
public static void main(String[] args) {
//创建接口类型的变量-->多态
Usb usb = new UsbImpl();//用接口创建一个变量,我们来研究一个具体的实现类
usb.service();//链接电脑成功
}
}