当前位置: 首页 > news >正文

已知顺丰快递既可以发陆运,也可以发空运;EMS只能发空运,圆通只能发陆运。 小明现在发送快递,为其设计两个方法,分别用来发空运和陆运。

首先顺丰,EMS,圆通都是快递公司,他们都有一个共同的属性,就是快递公司名字,因此抽象出一个共同的父类叫ExpressDelivery;
另外,空运和陆运都是一种行为,是不同的两种行为,因此定义两个接口来记录这两种行为。顺丰即可陆运,也可空运,因此两种接口都继承;EMS只能空运,因此只继承空运的接口,圆通只能发陆运,因此只继承陆运的接口。public class work05 {public static void main(String[] args) {//1.实例化一个人对象Person xiaoming=new Person("xiaoming");//2.实例化顺丰对象SF sf=new SF();//实例化圆通对象YTO yto=new YTO();//实例化EMS对象EMS ems=new EMS();//空运用顺丰xiaoming.sendByAirTransportation(sf);//陆运用顺丰xiaoming.sendByLandTransportation(sf);//空运用EMSxiaoming.sendByAirTransportation(ems);//陆运用圆通xiaoming.sendByLandTransportation(yto);}
}
class Person{String name;public Person() {}public Person(String name) {this.name = name;}//定义空运方法public void sendByAirTransportation(AirTransport airTransport){show();airTransport.AirTransportation();}//定义陆运方法public void sendByLandTransportation(LandTransport landTransport){show();landTransport.LandTransportation();}public String getName() {return name;}public void show(){System.out.print(toString());}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +'}';}
}
//圆通陆运
class YTO extends ExpressDelivery implements LandTransport{public YTO(){this.setName("圆通");}@Overridepublic void LandTransportation() {System.out.println(this.getName()+"陆运");}
}
//EMS 空运
class EMS extends ExpressDelivery implements AirTransport{public EMS(){this.setName("EMS");}    @Overridepublic void AirTransportation() {System.out.println(this.getName()+"空运");}
}
//顺丰既可以空运也可以陆运
class SF extends ExpressDelivery implements AirTransport,LandTransport{public SF(){this.setName("顺丰");}    @Overridepublic void AirTransportation() {System.out.println(this.getName()+"空运");}@Overridepublic void LandTransportation() {System.out.println(this.getName()+"陆运");}
}
//定义空运接口
interface AirTransport  {//定义空运方法void AirTransportation();
}
//定义陆运接口
interface LandTransport{//定义陆运方法void LandTransportation();
}
class ExpressDelivery {//定义快递名称String name;//无参构造public ExpressDelivery() {}//带一个参数的构造方法public ExpressDelivery(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "ExpressDelivery{" +"name='" + name + '\'' +'}';}
}

http://www.taodudu.cc/news/show-4974471.html

相关文章:

  • valgrind 工具使用
  • valgrind 工具介绍和简单的使用
  • valgrind 简介(内存检查工具)
  • 工具:valgrind学习
  • Win10下CS231n assignment1 环境配置
  • cs231n assignment2 PyTorch
  • Stanford cs231n'18 课程及作业详细解读
  • CS231n第一节
  • cs231n笔记总结
  • 【实验小结】cs231n assignment1 knn 部分
  • CS231n 两层神经网络反向传播实现
  • 【深度学习】cs231n计算机视觉 CNN(卷积神经网络)
  • FreeCAD错误:没有激活的实体 解决办法
  • springboot 整合mysql clickhouse 多数据源
  • 自定义数据源 整合 Mybatis-Plus-多租户
  • 2020FME博客大赛——FME在数据整合中的应用
  • 从零开始Tableau | 2.数据整合
  • 代码分析 | 单细胞转录组数据整合详解
  • 怎样的数据报表才能将公司全部业务数据整合在一起
  • 数据仓库、数据整合、ETL、ELT和EII之间的区别?
  • 生物信息学|MOLI:基于深度神经网络进行多组学数据整合并用于药物反应预测
  • 数据清洗 Chapter04 | 数据整合
  • 分享一篇 Science 里不同批次的单细胞数据整合及批次校正方法
  • 数据库数据整合
  • 数据挖掘二:数据整合
  • 数据整合基础知识介绍
  • 从零开始设计键值数据库(KEY-VALUE STORE)
  • MySQL键值
  • 常用键值表
  • JAVA怎么给手机发短信对接验证码短信接口DEMO示例