http://www.verejava.com/?id=16992821172850

/**接口的实际应用:题目: 两个人A,B开发一个火车票显示功能A负责客户端, B负责服务器端思路:1. 抽象出类: 1.1 客户端显示类(Terminal)1.2 服务器端服务类(TrainService)1.3 火车票(Ticket)2. 找出类关系: 2.1 客户端 调用 服务器端 的获取火车票信息显示TrainService -> Terminal(调用)2.2 服务器端 提供 火车票信息 给 客户端 Ticket->TrainService(多对1) Ticket -> Terminal(多对多)3. 找出类属性:3.1 Ticket(车次,出发地,到达地,票价)3.2 TrainService(火车站名称)3.3 Terminal(代售点名称)4. 找出类方法: 4.1 TrainService: 提供火车票信息 Ticket[] getTickets()4.2 Terminal: 显示火车票信息 display()
*/
import java.util.Scanner;public class ApplyInterface {public static void main(String[] args) {//北京西站火车票服务器打开TrainService beijingWestService = new BeijingWestTrainService("北京西站");//北京站火车票服务器打开TrainService beijingService = new BeijingTrainService("北京站");//我是北京朝阳区大黄庄的 代售点Terminal t = new Terminal("北京朝阳区大黄庄的 代售点");Scanner in = new Scanner(System.in);System.out.println("请输入要查的火车站代码 1:北京西站 2:北京站");int trainId = in.nextInt();if (trainId == 1) {t.setTrainService(beijingWestService);}if (trainId == 2) {t.setTrainService(beijingService);}//打开火车电脑终端 查看火车票信息t.display();}
}class Ticket {private String id;//车次private String startCity;//出发城市private String endCity;//到达城市private float price;//票价public Ticket(String id, String startCity, String endCity, float price) {this.id = id;this.startCity = startCity;this.endCity = endCity;this.price = price;}public String getId() {return this.id;}public String getStartCity() {return this.startCity;}public String getEndCity() {return this.endCity;}public float getPrice() {return this.price;}
}interface TrainService {//A和B约定一个提供火车票的方法public Ticket[] getTickets();//获取火车站名字public String getName();
}class BeijingWestTrainService implements TrainService {private String name;public BeijingWestTrainService(String name) {this.name = name;}public String getName() {return this.name;}//提供火车票的实现方法public Ticket[] getTickets() {Ticket[] tickets = { new Ticket("T1", "北京", "长沙", 175f) };return tickets;}
}class BeijingTrainService implements TrainService {private String name;public BeijingTrainService(String name) {this.name = name;}public String getName() {return this.name;}//提供火车票的实现方法public Ticket[] getTickets() {Ticket[] tickets = { new Ticket("T215", "北京", "吉林", 130f) };return tickets;}
}class Terminal {private String proxy;//代售点名称private Ticket[] tickets;// 火车票引用private TrainService trainService;// 服务器接口引用public Terminal(String proxy) {this.proxy = proxy;}public void setTrainService(TrainService trainService) {this.trainService = trainService;}//显示火车票的信息//    思路://        1. 首先要从服务器端 获取 火车票信息//        2. 循环把火车票信息显示在电脑终端上public void display() {//获取火车票信息tickets = trainService.getTickets();//输出火车票信息System.out.println(trainService.getName());System.out.println("车次------出发地------到达地------票价");if (tickets != null) {for (int i = 0; i < tickets.length; i++) {System.out.println(tickets[i].getId() + "------" + tickets[i].getStartCity() + "------" + tickets[i].getEndCity() + "------" + tickets[i].getPrice());}}}
}

http://www.verejava.com/?id=16992821172850

Java 面向对象 之 接口 火车票实例相关推荐

  1. java 火车票_Java 面向对象 之 接口 火车票实例

    /** 接口的实际应用: 题目: 两个人A,B开发一个火车票显示功能A负责客户端, B负责服务器端 思路: 1. 抽象出类: 1.1 客户端显示类(Terminal) 1.2 服务器端服务类(Trai ...

  2. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  3. Java面向对象编程——接口

     接口是个比抽象类更抽象的一个抽象类 上个文章讲解了抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更特殊的"抽象类"--接口(interface). ...

  4. Java -- 面向对象【接口】

    Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现, ...

  5. 第三十、Java面向对象之接口

    一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class Ye{String name; }class Fu extends Ye{}// class Zi extend ...

  6. Java面向对象基础接口和抽象的理解

    第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...

  7. Java+Axis WebService接口开发实例

    一.下载Axis的jar包 下载地址:http://ws.Apache.org/axis/ 二.创建两个Web项目 1.WebService项目:负责提供接口,导入Axis的Jar包 (1)创建ser ...

  8. Java面向对象之接口(常用)

    接口特点 接口就是规范,定义的是一组规则,体现了现实世界中"如果你是-,则必须能-",例如,如果你是汽车,则必须能跑 接口的本质是契约,就像法律一样,制定好了大家都要遵守 面向对象 ...

  9. Java面向对象(接口、匿名内部类、object类、单例、多例)

    1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...

最新文章

  1. 基于开源、混合云 惠普Helion开年3款新品发布
  2. 浅谈osi模型 三次握手 四次挥手 ddos攻击原理
  3. c mysql insert语句_MySQL_mysql insert详细讲解,INSERT语法 INSERT [LOW_PRIORITY |DELA - phpStudy...
  4. 消息中间件的实现方案
  5. “ GPU视频处理技术调研报告 ”
  6. iOS字符串常用用法
  7. 微信广告任务平台源码运营版
  8. 这个教程价值有点高,利用Python制作全自动化营销软件!
  9. sencha touch 在安卓中横屏、竖屏切换 应用崩溃问题
  10. 如何备份服务器日志到其他服务器_云计算迁移别忘了备份物理服务器和数据
  11. SQL Server审核功能–发现和体系结构
  12. mysql 排序查询核心
  13. [2019.04.16] 由Python写成的自动解压脚本
  14. PyQt5 the application failed to start because no Qt platform could be initialized
  15. 根据小米商城官网首页效果敲写页面
  16. redis px nx ex xx
  17. alert(isPresented: Binding<Bool>, content: () -> Alert) (SwiftUI 中文文档手册 教程含源码)
  18. 被发哥拉着跪向观众,朱军为何如此惊魂?
  19. Hadoop性能调优全面总结
  20. 分词使用 jieba 、IKAnalyzer

热门文章

  1. 电脑投屏软件哪个好_电脑绘画软件哪个好?
  2. 不错的流量卡官网html源码
  3. laravel mysql注入_PHP 项目中单独使用 Laravel Eloquent 查询语句来避免 SQL 注入
  4. 小姐姐写真网站源码自带点数据
  5. 一键自动生成数据库文档,炫!(告别CV大法)
  6. 自己动手架设linux下Web服务器(图)4
  7. Bootstrap 3 与 Foundation 5 的区别
  8. Magento调试 - 页面空白,打开错误报告的方法
  9. 如何显示Magento的最新产品
  10. php clean html 可以设置过滤及保留属性