版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元5
抽象类与接口5.1抽象类与接口程序设计
任务书5.1设计成品入库业务接口任务描述基于RFID的成品自动防呆出货系统中,入库RFID系统的数据是仓库管理员从MES系统中导出的数据,与RFID系统扫描实际成品货物上的RFID标签数据进行对比,匹配的成品才可以入库。对于入库的成品数据可以进行更新操作,即增加、删除、修改、查询。效果如图5-1所示。图5-1成品入库管理系统知识目标理解抽象类的概念。理解接口的作用。熟悉接口的定义与实现。熟悉对象转换类型。能力目标能使用多态与接口结合的技术,解决实际问题。能使用面向接口编程模式可以使业务逻辑思路清晰,编程灵活,可维护性高。素养目标培养探究式学习的能力以及精益求精的工匠精神。团队合作、沟通交流。任务书5.1设计成品入库业务接口生活中的抽象案例
相关知识模拟“商店销售商品”场景:“商店销售商品”,这就是一个抽象的行为:到底哪个商店,是超市还是商场,是实体店还是网店,都不清楚?这个抽象行为没有指明具体的信息。我们设计一个超市的抽象类,并定义销售的抽象方法。具体是哪家商店,销售什么商品,交给子类去实现。5.1.1抽象类抽象类和抽象方法
抽象类抽象类:Java中有一种类,派生出很多子类,而自身是不能用来生产对象的,这种类称为“抽象类”。抽象类的作用有点类似“模板”,其目的是要设计者依据它的格式,来修改并创建新的子类。定义抽象类与抽象方法时,必须使用abstract关键字,语法如下:[访问权限修饰符]abstractclass类名{
声明数据成员;
访问权限返回值的数据类型方法名(参数列表){
//定义一般方法}
abstract
返回值的数据类型方法名(参数列表);}5.1.1抽象类生活中的抽象案例案例:超市抽象类public
abstract
classMarket{publicStringname;//商店名称publicStringgoods;//商品名称public
abstract
voidsale();}定义一个抽象类定义一个抽象方法在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类。5.1.1抽象类案例:超市抽象类public
classRTMarketextendsMarket{public
voidsale(){ System.out.println(name+"超市销售"
+goods);}}public
classJingDongMarketextendsMarket{public
void
sale(){System.out.println(name+"商城销售"
+goods);}}抽象类被继承后,子类需要重写抽象类中的所有抽象方法如果继承抽象类的子类也被声明为抽象类,则可以不用重复父类中所有的抽象方法。5.1.1抽象类public
classGoShoping{public
static
voidmain(String[]args){Marketmarket=newRTMarket();
market.name="大润发";market.goods="奥妙洗衣粉";market.shop();market=newJingDongMarket();
market.name="京东";market.goods="蓝月亮洗衣粉";market.shop();}}案例:抽象类抽象类不能直接被实例化,
如newMarket()。利用子类实例化,实现对象多态性,向上转型。5.1.1抽象类抽象类的使用原则
抽象类抽象类必须要有子类,子类必须使用extends继承抽象类,一个子类只能继承
一个抽象类。创建子类,必须实现抽象类中的全部抽象方法。反之,该子类则为抽象类。如果要想实例化抽象类的对象,则可以通过子类进行对象的向上转型来实现。5.1.1抽象类
接口概念生活中的接口案例U盘
移动硬盘
手机5.1.2接口
接口概念生活中的接口案例
声卡显卡网卡主板每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在PCI插槽上,而不用担心哪个插槽是专门插哪个卡的。5.1.2接口
接口概念什么是接口接口(Interface)的本质其实也是一个类,而且是一个比抽象类还要抽象的类。5.1.2接口
接口概念什么是接口
接口(Interface),接口是类的行为的抽象概述。在JAVA编程语言中,是一个抽象类型,是抽象方法(功能)的集合,接口通常以interface来声明。(1)有利于代码的规范(2)有利于代码进行维护(3)有利于代码的安全和严密(4)丰富了继承的方式接口的作用5.1.2接口
接口及实现类接口的声明[访问权限修饰符]interface
接口名[extends
父接口名列表]{
[public][static][final]常量;
[public]
[abstract]方法名();//定义没有方法体的抽象方法}在Java中接口是一种与类相似的结构,只包含常量和抽象方法。每个接口都被编译为独立的字节码文件。5.1.2接口
接口及实现类接口的实现[访问权限修饰符]class
类名
implements
接口名表{
}接口可实现多继承,一个类可以实现多个接口。实现接口的子类不能对接口中的变量重新赋值。5.1.2接口
示例:接口及实现类创建教师类和学生类,两个类都实现了问候接口和工作接口,模拟上课的场景。public
interfaceAction{//创建一个Action接口 public
voidwork();//创建一个抽象方法work() public
voidtalk();//创建一个抽象方法talk()}声明接口Action命名规范:接口名必须是合法的Java标识符,一般情况下,接口名可以是一个形容词或者名词,要求首字母大写。15.1.2接口public
classStudentimplementsAction{//创建一个Student类实现接口ActionpublicStringname;//定义姓名publicStudent(Stringname){//对姓名进行初始化this.name=name;}@Overridepublic
voidwork(){//重写work()方法System.out.println(name+":同学开始记笔记");}@Overridepublic
voidtalk(){//重写talk()方法System.out.println(name+":老师好");}}
示例:接口及实现类声明Student类实现接口2接口必须有子类,子类依靠implements关键字可以实现多个接口。利用接口创建子类的过程,称为接口实现。5.1.2接口
示例:接口及实现类public
classTeacherimplementsAction{//创建一个Teacher类实现接口Action
publicStringname;//定义姓名publicTeacher(Stringname){//对姓名进行初始化this.name=name;}@Overridepublic
voidwork(){//重写work()方法System.out.println(name+":老师开始上课");}@Overridepublic
voidtalk(){//重写talk()方法System.out.println(name+":同学们好");}}声明Teacher类实现接口3接口中的方法都是抽象方法,所以当子类实现接口时,必须实现接口中的所有抽象方法。5.1.2接口
示例:接口及实现类public
classTest{//创建一个Test类public
static
voidmain(String[]args){Action[]per={newStudent("张非"),newTeacher("孙斌")};//通过相应的对象调用相应的方法实现控制台输出结果per[0].talk();per[1].talk();per[1].work();per[0].work();}}测试类Test利用实现类实例化,实现对象多态性,向上转型。接口与抽象类相似,不能使用new操作符创建接口的实例。运行时,根据实际创建的对象类型调用相应的方法实现。45.1.2接口
接口及实现类接口和抽象类的区别
接口与抽象类的区别变量构造方法方法抽象类无限制子类通过构造方法调用父类构造方法,抽象类不能用new操作符实例化无限制接口所有变量必须是publicstaticfinal没有构造方法。接口不能使用new操作符实例化所有方法必须是公有的抽象实例方法。Java只允许为类的扩展做单一继承,但是允许使用接口做多重扩展。利用extends关键字继承其他接口。接口可以拓展其他接口而不是类。一个类可以扩展它的父类同时实现多个接口。抽象类和接口都是用来明确多个对象的共同特征的。在实际设计过程中,如果描述父子关系表示强的“是一种”的关系应该用类建模,弱的“是一种”的关系,也称为类属关系,表明对象拥有某种属性时,可以用接口建模。5.1.2接口单元5
抽象类与接口5.2集合框架程序设计
任务书5.2更新成品入库数据任务描述基于RFID的成品自动防呆出货系统中,仓库管理人员可以对导入的成品数据进行查询、修改与删除等操作。成品导入文件模板数据操作,定义了一个数据类MESDataSet.java,使用ArrayList集合存放多个成品信息。在任务5.1基础上,重新编写StockDao接口中的5个方法,针对入库的成品数据可以进行更新操作,即增加、删除、修改、查询。效果如图5-2所示。图5-2成品入库管理系统知识目标熟悉遍历集合的方法。熟悉List、Set、Map等接口及其实现类中的常用方法。熟悉不同集合容器的特点。能力目标会查看集合容器的API文档。能对集合进行遍历。能选用合适的集合类与方法,解决实际问题。素养目标培养团队协作和大局意识。培养创新意识,提升专业认同度。任务书5.2更新成品入库数据生活中的抽象案例
相关知识模拟“商店销售商品”场景:“商店销售商品”,这就是一个抽象的行为:到底哪个商店,是超市还是商场,是实体店还是网店,都不清楚?这个抽象行为没有指明具体的信息。我们设计一个超市的抽象类,并定义销售的抽象方法。具体是哪家商店,销售什么商品,交给子类去实现。5.1.1抽象类
相关知识实际问题一
学生1学生20一维数组每天的新闻总数不确定,显然无法再使用数组保存如何存储一个班的学生信息(假定一个班容纳20名学生)publicclassStudent
{ publicString
stuName; publicStringstuNumber; publicStringSex; publicvoidtoString() {
System.out.println(“……”); }}publicstaticvoidmain(Stringargs[])
{Students01=newStudent();Students02=newStudent();
……
Studentarr[]={s01,s02,……};}1.集合框架实际问题二
每天的新闻总数不确定,显然无法再使用数组保存如何存储每天的新闻信息?新闻1……新闻N实际问题二
如何存储课程的代码与课程信息,能够通过代码方便地获得课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象,——那么,可以使用Java集合框架,来解决这类问题。代码1……代码N课程1……课程N一一对应1.集合框架集合类
为了保存数量不确定的数据,以及保持具有映射关系的数据,Java提供了集合类。集合类主要负责保存、盛装其他数据,也被称为容器类。Java所有的集合类都位于java.util包下,提供了一个表示和操作对象集合的统一架构,包含大量集合接口,以及这些接口的实现类和操作它们的算法。集合框架
集合框架集合框架
Java集合类型分为Collection和Map,它们是Java集合的根接口,这两个接口又包含了一些子接口或实现类。Collection接口基本结构
集合框架集合框架
Java集合类型分为Collection和Map,它们是Java集合的根接口,这两个接口又包含了一些子接口或实现类。Map接口基本结构2.ArrayListArrayList类
ArrayList类实现了可变数组的大小,存储在内的数据称为元素。它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好。publicclassTest{
publicstaticvoidmain(String[]args){ Listlst1=newArrayList();//创建集合 ArrayListlst2=newArrayList();}}2.ArrayListArrayList集合类常用方法方法名说明booleanadd(Objecto)在列表的末尾顺序添加元素,起始索引位置从0开始voidadd(int
index,Objecto)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间intsize()返回列表中的元素个数Objectget(intindex)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换booleancontains(Objecto)判断列表中是否存在指定元素booleanremove(Objecto)从列表中删除元素Object remove(intindex)从列表中删除指定位置元素,起始索引位置从0开始Int
indexOf/lastIndexOf(Objecto)返回对象o在List中的第一次/最后一次出现的位置Objectset(int
index,Objectelement)将index索引处的元素替换成element对象,返回新元素2.ArrayListArrayList集合类常用操作添加元素访问元素修改元素删除元素计算元素个数迭代数组列表list.add("link");list.add("tom");list.add(1,"lucy");list.get(0);list.get(1);list.get(i);list.remove(0);list.remove("link");list.set(2,"bobo");intsize=list.size();for(inti=0;i<list.size();i++){
System.out.println(list.get(i));}举例
2.ArrayListpublicclassTest{
publicstaticvoidmain(String[]args){Listlist=newArrayList();//创建集合list.add(“A”);list.add(“B”);list.add(“D”);
list.add(2,“C”); list.remove(“A”);
}}举例
使用ArrayList类向集合中添加三位客户(Customer)信息,包括客户身份证号、姓名和电话,然后遍历集合输出这些客户信息。2.ArrayListpublic
classCustomer{publicStringname;public
StringidNumber;publicStringtel;
publicCustomer(Stringname){//带参构造方法
this.name=name}public
voidtoString(){//重写方法
System.out.println("姓名:"+name+....);}}publicclassTest{
publicstaticvoidmain(String[]args){
Customerc01=new
Customer("张小三");
Customerc02=new
Customer("李小四");
Customerc03=new
Customer("王小五");Listlist=newArrayList();//创建集合list.add(c01);list.add(c02);list.add(c03);System.out.println("***客户信息***");for(inti=0;i<list.size();i++){//循环遍历集合,输出集合元素
Customerc=(Customer)list.get(i);System.out.println(c);}}}
(1)封装一个学生类,包含学号、姓名两个属性(已提供)(2)定义一个测试类,向ArrayList对象中添加5个学生,并且遍历学生信息2.ArrayListLinkedList类
采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。LinkedList是一个双向链表,使用LinkedList类比ArrayList类效率高。3.LinkedListpublicclassTest{
publicstaticvoidmain(String[]args){ Listlst1=newLinkedList();//创建集合 LinkedListlst2=newLinkedList();}}3.LinkedListLinkedList类特殊方法方法名说明voidaddFirst(Objecto)在列表的首部添加元素voidaddLast(Objecto)在列表的末尾添加元素Object getFirst()返回列表中的第一个元素Object getLast()返回列表中的最后一个元素Object removeFirst()删除并返回列表中的第一个元素Object removeLast()删除并返回列表中的最后一个元素VoidClear()清空3.LinkedList
封装一个人员类Person(包括姓名和年龄),使用LinkedList保存人员信息。调用相关方法实现输出显示,效果如图所示:4.Map实际问题
高校学生应聘至外企实习工作,每个人都会拥有一个英文名称,对应该学生对象Jack苏工院毕业的李明Rose苏州职大毕业的刘丽Anna苏州工艺美院毕业的杨慧通过key(英文名称)来获得value(学生对象)4.MapJava中的Map也是一个集合,一种依照键(key)存储元素的容器。map集合中的一个元素包含对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。用于维护“键-值对”的关联性,可以通过键查找值。5.HashMapHashMap类
HashMap是Map接口的一个具体实现类,它存储的内容是键值对(key-value)映射。publicclassTest{
publicstaticvoidmain(String[]args){
HashMapmap=newHashMap();//创建集合 Mapmap2=new
HashMap();}}HashMap常用方法方法名说明Objectput(Objectkey,Objectval)以“键-值对”的方式进行存储Objectget(Objectkey)根据键返回相关联的值,如果不存在指定的键,返回nullObjectremove(Objectkey)删除由指定的键映射的“键-值对”intsize()返回元素个数SetkeySet()返回键的集合Collectionvalues()返回值的集合boolean containsKey(Objectkey)如果存在由指定的键映射的“键-值对”,返回true5.HashMapHashMap集合类常用操作将键值存入map查找是否存在某个键通过键,获取值查找是否存在某个值map.put("Zara","8");map.put("Mahnaz","31");map.containsKey(("Ayan");map.get("Zara");map.get("Mahnaz");5.HashMapmap.containsValue(("31");通过键,删除元素获取元素个数map.remove("Zara");map.remove("Mahnaz");intn=map.size();获取键的集合获取值的集合map.keySet();map.values();使用举例
publicclassTest{
publicstaticvoidmain(String[]args){
HashMap<String,String>Sites=newHashMap<String,String>(); Sites.put("one","淘宝"); //添加键值对 Sites.put("two","京东"); Sites.put("three",“苏宁易购"); Sites.put("four","拼多多");
System.out.println(Sites.get("three"));
//通过Key来获取Value
System.out.println(Sites.size()); //获取元素数量
Sites.remove("four");
//通过Key来删除元素
}}5.HashMap课堂练习
有如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护校队巡逻工作制度
- 接处警反馈工作制度
- 搬迁办公室工作制度
- 政务信息处工作制度
- 政府安委会工作制度
- 政法委工会工作制度
- 教学工作站工作制度
- 教研组教师工作制度
- 教育局扶贫工作制度
- 敬老院门卫工作制度
- 2025年山东省中考道德与法治试卷真题(含答案)
- DB5309∕T 83-2025 临沧市暴雨强度公式
- 水利工程设计机构岗位职责与组织框架
- 新生儿肝脾大诊疗与管理
- PLC自动化立体仓库仿真系统设计
- 碎石场安全协议书
- 煤矿机电运输培训课件
- 国家职业标准 4-07-03-02 劳动关系协调师 (2025年版)
- 2025-2030中国担保行业市场深度调研及竞争格局与投资前景研究报告
- 2025年河南省中招理化生实验操作考试ABCD考场评分表
- 国家科技计划课题结题财务验收审计专项培训
评论
0/150
提交评论