接口的简单应用——快递案例
现在有三家快递公司:顺丰可以寄空运和陆运,EMS可以寄空运,圆通可以寄陆运。
现在小明想要通过这三家公司寄快递,请实现这一过程
分析:
1、类:人、顺丰、EMS、圆通
2、如何让人和快递公司产生联系,这个可以通过一个接口实现
而每家公司寄快递的功能不同,但是主要是两种,即陆运和空运
所以这里需要创建两个接口
3、总结:所以我们需要建立四个类和两个接口
我们也可以理解为:人是主类,三家公司是副类(这种只是便于初 学者理解用)
4、人是通过传参和接口建立联系的,而三家公司主要是通过实现接口中的方法和接口建立联系的,这样就可以把人和快递公司建立联系
//建立实现陆运的接口
//功能是:实现陆运
//这个接口的名字我们命名为实现陆运服务
//而这个名字主要是给快递公司实现接口用,相当于快递公司提供
//了快递服务
public interface SnedPackageByLandService {
//实现陆运的功能
void sendByLand();
}
//建立三个类,实现快递公司和接口之间的联系
//同理建立空运接口
public interface SnedPackageByAirService {
void sendByAir();
}
//建立顺丰类
public class ShunFeng implements SnedPackageByAirService,SnedPackageByLandService {
//实现接口中的方法
@Override
public void sendByAir() {
System.out.println("这个是顺丰空运");
}
@Override
public void sendByLand() {
System.out.println("这个是顺丰陆运");
}
}
//建立EMS类
public class EMS implements SnedPackageByAirService {
//实现空运功能
@Override
public void sendByAir() {
System.out.println("这个是EMS的空运");
}
}
//建立圆通类
public class YuanTong implements SnedPackageByLandService{
//实现圆通的功能
@Override
public void sendByLand() {
System.out.println("这个是圆通陆运");
}
}
//建立人类,实现人与接口的联系
public class Person {
//在人类中(也就是主类)是建立方法和接口相联系的
void sendPackageByLand(SnedPackageByLandService express){
//而这个联系主要是通过接口类型来完成的,这里的类型用陆运接口 并且传入参数以便引用接口中的方法
express.sendByLand();
}
//同理实现空运
void sendPackageByAir(SnedPackageByAirService express){
express.sendByAir();
}
}
//建立主函数来实现功能
public class Program {
public static void main(String[] args) {
//1、由于是静态的引用非静态的,所以先实例化
ShunFeng shunFeng = new ShunFeng();
EMS ems = new EMS();
YuanTong yuanTong = new YuanTong();
//2、实例化一个小明
Person xiaoming = new Person();
//3、实现功能
//小明通过圆通陆运寄快递
xiaoming.sendPackageByLand(yuanTong);
//小明通过EMS空运寄快递
xiaoming.sendPackageByAir(ems);
}
}
注:深刻的理解可以对接口有更加深入的理解