Java程序设计应用开发教程 课件 单元5 抽象类与接口_第1页
Java程序设计应用开发教程 课件 单元5 抽象类与接口_第2页
Java程序设计应用开发教程 课件 单元5 抽象类与接口_第3页
Java程序设计应用开发教程 课件 单元5 抽象类与接口_第4页
Java程序设计应用开发教程 课件 单元5 抽象类与接口_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论