1、JavaJava程序设计程序设计单元1 构建应用程序开发环境工作任务 (1)建立餐饮系统的开发环境(2)用Java程序输出餐饮系统的作者姓名(3)用Java程序输出餐饮系统的作者姓名和运行时间1.1引导资料 Java的由来 Java的特点 平台无关性 安全性 面向对象 简单性 动态特性 分布性 多线程教学项目功能简述 游戏项目(1)贪吃蛇游戏功能简介 贪吃蛇游戏主要功能是能通过按键(方向键:向上、向下、向左、向右)来控制蛇体的运行方向。当蛇体碰到食物时即可吞食食物,蛇体增长,同时可得分。当蛇体碰到墙体时,游戏结束。游戏可通过开始按钮、暂停/继续按钮、停止按钮等按钮来控制蛇体的运行状态。同时在界
2、面中即时显示蛇体的状态、速度、得分等信息。贪吃蛇游戏界面教学项目功能简述 游戏项目(2)连连看游戏功能简介 连连看游戏的主要功能是通过鼠标单击相同的两个图片,若图片间的边线在两个拐弯内即可连通消除。在该项目中能够选择等级并对当前等级的各种状态进行记录,如某级别的玩家记录、窗体设置等。能通过按钮有效地对游戏进行控制,如开始/停止、重置图片、提示、演示等功能。连连看游戏界面教学项目功能简述 数据库项目(1)餐饮管理系统功能简介 餐饮管理系统的主要功能是对菜品进行增加、删除、修改,能对菜品进行分类查询,并能够完成点菜功能,同时生成点菜单,结算打印小票等。(2)会员信息管理系统功能简介 会员信息管理系
3、统的主要功能是对会员信息进行增加、删除、修改,并能按会员类别进行分类查询。1.2 阶段任务实施 引导任务1-1 建立餐饮系统的开发环境 任务目标:能用正确配置Java开发环境。实现过程:(1)首先安装JDK(Java Development Kit)(2)再安装集成开发环境(IDE)1.2 阶段任务实施 引导任务1-2 用Java程序输出餐饮系统的作者姓名 任务目标:能用NetBeans编写第一个Java程序。实现过程:(1)打开NetBeans。(2)创建一个Java项目,项目名称为JavaBookApp。(3)手动编写Java源程序。1.2 阶段任务实施 引导任务1-2 用Java程序输出
4、餐饮系统的作者姓名 任务目标:能用NetBeans编写第一个Java程序。程序代码:public class TestRepast public static void main(String args)System.out.println(餐饮系统的作者是:sunny!);编译并运行程序。1.2 阶段任务实施 引导任务1-3 用Java程序输出餐饮系统的作者姓名和运行时间 任务目标:认识Java程序的基本结构。实现过程:(1)在NetBeans中repast项目下新建一个TestRepast2的Java文件。(2)在TestRepast2文件中输入程序代码。代码分析:认识Java程序的基本结
5、构 程序基本结构:1、包 2、注释3、导入包4、类定义 类变量定义 类方法定义 5、方法体类体类体1.3 知识解析1、开发Java程序的步骤开发Java程序的步骤可归结为如下3 步:编写源程序:用Java语言描述程序指令,以.java作为程序文件扩展名。编译:经编译器翻译后结果以.class作为扩展名,称之为字节码文件。运行:在Java平台上运行.class文件。1.3 知识解析2、认识Java包包在很大范围内实现面向对象程序设计的封装机制,它把一组类和接口封装在一个包中,这为管理大量的类和接口提供了方便,也有利于这些类和接口的安全。1.3 知识解析3、包声明 package 包名;例如:pa
6、ckage veg1;/定义了该类位于veg1包中。package veg1.veg2;/定义该类对应于包veg1的子包veg2中。说明:一个Java程序文件中最多只能有一个包声明。1.3 知识解析4、import 语句 对于已经编写好的类,如果在新类中需要使用,应该将已经定义的类包含进来。Java的import语句用于包含所需要的类。例如:import java.applet.Applet;import java.awt.*;说明:一个Java程序文件中可以有多个import语句。1.3 知识解析5、认识Java类 类是Java的心脏,整个Java语言就是建立在类的逻辑基础上的,每一个Jav
7、a程序都要有至少一个类。最基本的常用的定义方式:public class 类名 /类实体 类名要合符Java标识符的规则。在一个Java程序文件中,若有多个类的定义,应注意Java程序文件的命名。1.3 知识解析6、认识main方法 在Java的每个应用程序中,都必须有一个main方法,Java解释器运行字节码文件时,首先寻找main方法,然后以此为程序的入口点开始运行程序。1.3 知识解析7、输出打印语句:System.out.println()其作用是将括号中的字符串内容显示在屏幕上,并回车换行。大小写问题。语句:System.out.print()其作用与System.out.print
8、ln()语句相似,只是不会换行。1.3 知识解析8、连接符号在打印输出时可用“+”号将多个数据连接起来,作为一个整体来显示。如:System.out.println(“青菜的价格为:”+8.0+“元”)。1.3 知识解析9、初学者常犯错误(1)类名与源程序文件名不一致;(2)中英文符号问题;(3)大小写问题。(4)、()不成对或交错出现。1.3 知识解析10、断点调试 Netbean断点调试方法:(1)设置断点:在程序代码窗口中,单击需要设置断点的代码行号,即可设置行断点。(2)按Ctrl+Shift+F5调试当前程序,程序运行到断点之后,按F5可继续执行当前程序。1.4 训练任务任务内容(1
9、)创建贪吃蛇游戏项目。(2)创建连连看游戏项目。(3)创建学生信息管理系统项目。(4)在学生信息管理系统项目student中创建一个Java程序,输出你们班的名字、人数、男生数、女生数等信息。(5)更正下面的程序代码,并运行输出结果。public class Ch0101 public static void main(String args)system.out.println(*)system.out.println(*)system.out.println(*)JavaJava程序设计程序设计单元2 利用符号构建Java语句 工作任务 (1)输出一次餐饮消费中的消费清单(2)输出会员在一
10、次餐饮消费中的消费清单 阶段一:标识符、数据类型与变量 引导任务2-1 输出一次餐饮消费中的消费清单 任务目标:能正确使用Java符号、数据类型以及变量和常量。设计要求:用常量来完成清单提示数据,消费清单具有顾客所消费的菜的名称、单价、数量及价格小计等。实施过程:在项目repast中新建一个包ch02.part1,并在该包中新建一个类TestVar,通过打印输出语句直接将信息显示在界面上。2.2 知识解析1、Java的字符集 Java 采用一种称为unicode的字符集,该字符集合是一种新的编码标准。2、标识符 Java语言中,为了有效地表示事物属性及其值的运算,程序中给所有的事物属性都采用一
11、种符号化名称,这种名称就叫标识符。标识符必须是以一个字母、下划线或美元符号“$”开始的一串字符,后面的字符可以是字母、数字、下划线、美元符号等。2.2 知识解析3、关键字 关键字是为特定目的而保留的保留字,故也称保留字。关键字是Java语言本身占用的,不能做其它用途使用的符号。4、分隔符与注释 分隔符起分隔单词符号的作用。包括分号;、花括号和空白符号。注释中的内容会被编译器忽略,不出现在执行程序中。2.2 知识解析5、数据类型 在程序设计中,使用数据类型来标识一个数据是属于哪个类别的,且现实事物各种属性的数据都能找到与之匹配的类型。在Java中,数据类型可划分为简单类型和复合类型。6、变量与常
12、量 变量和常量的类型与数据类型相对应的,即一个变量或常量仅是属于某一种数据类型的。常量是指在程序执行过程中其值不可发生变化的量。变量是指在程序执行过程中其值可发生变化的量,在使用时必须先声明。2.2 知识解析7、数据类型的转换 整型、实型、字符型数据可以混合运算,运算过程中,不同的类型数据要先转换为同一类型的数据才能进行运算。数据类型转换表:原始类型目标类型原始类型目标类型Byteshort,char,int,long,float,doubleintlong,float,doubleShortint,long,float,doublelongfloat,doublecharint,long,f
13、loat,doublefloatdouble2.3 训练任务 1、跟我学 完成引导任务2-1的程序设计与调试工作,具体内容见引导任务2-1。2、自己做(1)使用变量输出贪吃蛇游戏当前的状态、运行速度、得分。(2)使用常量定义贪吃蛇游戏中的相关信息,如蛇的初始长度、初始速度、加速或减速的幅度等。阶段二:操作符与表达式 任务2-2 输出会员在一次餐饮消费中的消费清单 任务目标:学会运算符、表达式 设计要求:消费清单具有顾客所消费的菜的名称、单价、数量及价格小计等,并根据会员折扣进行结算后输出。实施过程:在项目repast中新建一个包ch02.part2,并在该包中新建一个类TestMemCon,通
14、过使用常量title1、title2完成清单头的内容,用变量name、price、num等临时存储相应数值,用变量IsMember来表示是否是会员,并按会员进行结算。2.5 知识解析1、运算符与表达式 Java的运算符代表着特定的运算指令,程序运行时将对运算符连接的操作数进行相应的运算。表达式:运算符与操作数的组合构成表达式,其代表着一个确定的数值。2、赋值运算符 赋值运算符把常量、变量或表达式的值赋给一个变量,赋值运算符用等号“=”表示。赋值运算符遵循向右至左的结合性,即将“=”右边的表达式值赋给其左边的变量。2.5 知识解析3、算术运算符 算术运算符如下表:算术运算符说明+正值运算符、加法
15、运算符-负值运算符、减法运算符+自增运算符-自减运算符*乘法运算符/除法运算符%求余运算符2.5 知识解析4、关系运算符 关系运算进行比较运算,通过两个值的比较,得到一个boolean(逻辑)型的比较的结果,其值为“true”或“false”。在Java语言中“true”或“false”不能用“0”或“1”来表示,而且这两个逻辑值必须用小写“true”与“false”。5、逻辑运算符 Java语言中,提供了6种逻辑运算符,逻辑运算符的运算结果为逻辑型“true”或“false”。2.5 知识解析6、位运算符 使用任何一种整数类型时,可使用位运算符对这种数据的二进制位进行操作。7、条件运算符 条
16、件运算符的使用方式由“?”和“:”连接的三个操作数构成。一般的形式为:表达式1?表达式2:表达式3 执行的顺序为:先求解表达式1,若为真,取表达式2的值作为最终结果返回,若为假,取表达式3的值为最终结果返回。2.5 知识解析8、其它运算符 其它运算符如下表:符号功能()表示式加括号则优先运算(参数表)方法的参数传递,多个参数时用逗号分隔(类型)强制类型转换.分量运算符,用于对象属性或方法的引用 下标运算符,引用数组元素instanceof对象运算符,用于测试一个对象是否是一个指定类的实例new对象实例化运算符,实例化一个对象2.5 知识解析9、运算符优先级 在实际的开发中,可能在一个运算符中出
17、现多个运算符,那么计算时,就按照优先级级别的高低进行计算,级别高的运算符先运算,级别低的运算符后计算。具体优先级见右表:优先级运算符结合性1().从左到右2!+(正)-(负)+-从右向左3*/%从左向右4+(加)-(减)从左向右5 从左向右6 =instanceof从左向右7=!=从左向右8&(按位与)从左向右9从左向右10|从左向右11&从左向右12|从左向右13?:从右向左14=+=-=*=/=%=&=|=从右向左2.6 训练任务 1、跟我学 完成引导任务2-1的程序设计与调试工作,具体内容见引导任务2-1。2、自己做(1)模拟贪吃蛇吃到食物后计算并输出新得分程序。(2)模拟连连看游戏判断
18、是否打破记录的程序。JavaJava程序设计程序设计单元3 利用控制结构实现程序业务逻辑 Java语言课程组工作任务 (1)改进在一次餐饮消费中的消费清单的输出程序(2)根据餐饮会员的积分值,判断会员的等级(3)设计出可供三种会员等级消费的选择主界面(4)输入某顾客一次餐饮消费中的消费清单(5)设计餐饮系统的登录界面(6)设计餐饮系统登出时的界面(7)用程序描述顾客点菜的过程阶段一:分支结构if语句 引导任务3-1 改进在一次餐饮消费中的消费清单的输出程序 任务目标:学会if分支控制结构 设计要求:消费清单具有顾客所消费的菜的名称、单价、数量及价格小计等,并能从键盘输入接受一个值,根据该值判断
19、是否为会员,从而判断是否是会员进行结算。实施过程:在项目repast中新建一个包ch03.part1,并在该包中新建一个类IsMember,通过使用常量title1、title2完成清单头的内容,用变量name、price、num等临时存储相应数值。通过从键盘输入数据,判断是否是会员,以改变变量member值。并通过if语句进行会员判断,若是会员则按会员进行结算,若不是则按非会员进行结算。阶段一:分支结构if语句 引导任务3-2 根据餐饮会员的积分值,判断会员的等级 任务目标:学会if分支控制结构 设计要求:高于1000分的为金牌会员,大于700分而小于等于1000分的为银牌会员,大于500分
20、而小于等于700分的为铜牌会员,大于200分而小于等于500分的为铁牌会员,小于200分的普通会员。通过键盘读入积分,从而判断其分值所在范围并进行相应的等级提示。实施过程:在项目repast的包ch03.part1包中新建一个类MemberScore,通过键盘输入积分值并将分值存放于变量count中,通过嵌套if结构进行连续条件区间的判断而完成相应的等级提示。3.3 知识解析1、基本if分支结构 基本if结构形式是:if(条件表达式)语句体1;else 语句体2;其中,“else 语句体”可选。流程图:条件表达式语句体1真假语句体23.3 知识解析2、键盘输入 Scanner是在SDK1.5以
21、后新增的一个类,可使用该类创建一个键盘输入对象。Scanner reader=new Scanner(System.in);然后reader对象调用相关方法(函数),读取用户在命令行输入的各种数据类型。3.3 知识解析3、嵌套的if结构 嵌套if结构的形式是:if(条件表达式1)语句体1;else if(条件表达式2)语句体2;else 语句体n;流程图:条件表达式1语句体2假真语句体1条件表达式2真语句体3假3.4 训练任务 1、跟我学 完成引导任务3-1至引导任务3-2的程序设计与调试工作,具体内容见引导任务3-1至引导任务3-2。2、自己做(1)根据按键输出贪吃蛇的当前运行方向。(2)为
22、根据消费总额进行打折。阶段二:分支结构switch语句 引导任务3-3设计出可供三种会员等级消费的选择主界面 任务目标:学会switch控制语句 设计要求:能根据会员的选择进入不同的消费区。先通过输出语句完成界面提示,然后检测并接受键盘的输入,并判断该键值,根据选择键值进行相应的等级。实施过程:在项目repast中新建一个包ch03.part2,并在该包中新建一个类SwitchMember,先通过输出语句完成界面提示,然后用变量c获取System.in.read()所取得的键值。再通过开关语句switchcase来完成判断,并根据判断进入不同玩区。3.6 知识解析switch选择结构 基本形式
23、为:switch(表达式)case 值1:语句体1;break;case 值2:语句体2;break;case 值3:语句体3;break;case 值n:语句体n;break;default:语句体n+1;3.6 知识解析switch选择结构 流程图:表达式=值1表达式=值1表达式=表达式=值n语句体1break语句体语句体nbreak语句体2breakbreak语句体n+13.6 知识解析switch选择结构 switch选择语句的表达式的值应为一个byte、short、int、char类型的数值。switch选择结构目的就是为了从众多情况中选择所希望的一种去执行,故而,每一分支语句中都用
24、break语句作为结束。switch选择语句中可以有一个default语句作为所列分支都不匹配时的出口。3.7 训练任务 1、跟我学 完成引导任务3-3的程序设计与调试工作,具体内容见引导任务3-3。2、自己做(1)根据按键输出贪吃蛇的当前运行方向。(2)从键盘输入2012年的某一月份,打印出该月份的天数。阶段三:循环结构for语句 引导任务3-4 输入某顾客一次餐饮消费中的消费清单 任务目标:学会for循环控制结构 设计要求:能通过键盘的输入消费清单数据,如菜品名称、单价、消费数量等。循环接受键盘的输入,直到输入完清单中条目。实施过程:在项目repast中新建一个包ch03.part3,并在
25、该包中新建一个类ConList,先通过用Scanner对象input获取键盘的输入数据,然后通过循环语句for进行循环输入消费信息并输出。3.9 知识解析for循环结构 一般格式为:for(循环初始值;循环条件;循环增长量)循环体 流程图:循环初始值循环体循环增长量循环条件真假3.9 知识解析for循环结构for循环结构中的初始值、测试条件及增长量皆由表达式组成,三者皆为可选的。如果连测试条件都没有,那么将是无穷循环。“循环初始值;循环条件;循环增长量”三者之间用分号“;”隔开,故每个部分可以有几个表达式,每个表达式之间用逗号“,”隔开。for结构常常临时说明局部变量作为循环变量使用,当for
26、循环结束时,这种临时局部变量即失效。3.10 训练任务 1、跟我学 完成引导任务3-4的程序设计与调试工作,具体内容见引导任务3-4。2、自己做(1)模拟贪吃蛇连续吃到10个事物的过程。(2)利用for循环打印出以下格式的内容。阶段四:循环结构while语句与dowhile语句 引导任务3-5 设计餐饮系统的登录界面 任务目标:学会使用while循环语句。设计要求:要求三次登录不成功则退出登录界面。循环接受键盘的输入,并判断每次输入的数据是否合要求,若合符要求,则进行系统,否则重新输入数据。三次输入不成功则退出登录界面。实施过程:在项目repast中新建一个包ch03.part4,并在该包中新
27、建一个类WhileLogin,先通过用Scanner对象input获取键盘的输入数据,然后通过循环语句while进行三次循环限定。阶段四:循环结构while语句与dowhile语句 引导任务3-6 设计餐饮系统登出时的界面 任务目标:学会使用dowhile循环语句。设计要求:当餐饮系统正在进行时被用户关闭时,要询问是否还要进行使用,以增强交互。循环接受键盘的输入,根据输入判断是否登出系统。实施过程:在项目repast的包ch03.part4包中新建一个类Ch0209,通过循环语句dowhile循环检测Scanner对象input获取的输入数据。若为字符“y”则游戏结束,否则继续新游戏。3.13
28、 知识解析1、while循环结构 while循环结构的表达形式为:while(循环条件)语句体 其中“循环条件”为一个逻辑表达式。流程图:循环体改变循环条件循环条件真假3.13 知识解析2、dowhile循环结构 dowhile循环结构的表达形式为:do 语句体 while(表达式);流程图:假循环体循环条件真3.14 训练任务 1、跟我学 完成引导任务3-5与引导任务3-6的程序设计与调试工作,具体内容见引导任务3-5与引导任务3-6。2、自己做(1)模拟贪吃蛇碰到墙体时退出的过程。(2)模拟会员抽奖。阶段五:控制转移 引导任务3-7 用程序描述顾客点菜的过程 任务目标:学会使用控制转移结构
29、。设计要求:能从键盘依次输入顾客所点的菜。并要循环接受键盘的输入,根据输入判断是否继续点菜。实施过程:在项目repast中新建一个包ch03.part5,并在该包中新建一个类CusSelVeg,通过循环语句while循环进行询问,并检测Scanner对象input获取的输入数据,若输入的字符“y”则继续点菜,否则结束点菜。3.16 知识解析1、continue continue语句有两种形式:continue;continue 标号;流程图:3.16 知识解析1、continue continue语句的作用就是提前继续下一个循环,即:如果正在进行第N次循环,就增加循环变量,测试循环条件,如果符
30、合,进入第N+1次循环。第二种用法“continue标号;”用在希望结束内部循环而继续外部循环,同时不希望外部循环从头开始。3.16 知识解析2、break break语句亦有两种形式 break;break标号;流程图:3.16 知识解析2、break break语句用于for、while、dowhile与switch结构中,其语句的作用与continue语句正好相反。执行break语句时,程序跳转到循环结构或选择结构语句块的结束处,执行下一条语句。使用第二种用法“break标号;”时,应在程序中 事先定义一个匹配的标号,且此标号必须在一个完整程序块开始处。3.16 知识解析3、return
31、 return语句有以下两种表达形式:return;return(表达式);return语句用于从方法中返回上一级程序。使用第二种形式能向上一级程序返回值一个返回值。若方法的返回值设定为“void”类型,则只能使用第一种返回形式。3.17 训练任务 1、跟我学 完成引导任务3-7的程序设计与调试工作,具体内容见引导任务3-7。2、自己做 模拟贪吃蛇暂停/继续运行的过程。当按键为P时暂停,按键为C时继续,其它键值暂不处理,直到按键为E时退出。JavaJava程序设计程序设计单元4 设计应用程序的类与接口工作任务 (1)定义菜品类(2)为菜品类添加主要方法(3)实现餐饮管理系统消费结算功能(4)定
32、义一个用于消费结算的接口4.1引导资料 面向对象的基本概念 对象(Object)对象由属性(Attribute)和行为(Action)两部分组成,是数据和行为的统一体。类(Class)共享同一属性和方法集的所有对象的集合构成类。消息(message)为了能完成固有的任务,对象需要与其他对象进行互操作,这是连接对象与外部世界的唯一通道。接口(interface)接口是一个类所具有的方法的特征集合,是一种逻辑上的抽象,接口是消息的通道,通过接口,消息才能传递到具体的处理方法中进行处理。4.1引导资料 面向对象的特性 抽象性 封装性 继承性 多态性 多态性多态性 多态性多态性 4.2阶段任务实施 引
33、导任务4-1 定义菜品类 任务目标:能定义类。实现过程:在NetBeans中打开项目repast,然后在该项目中新建一个包ch04.part1,再在ch04.part1包中新建一个类TestVegtable,并为该类添加如P52页的代码,最后保存、编译。4.3 知识解析1、类的声明 类定义的一般形式如下:访问控制修饰 abstract final extends 父类 implements 接口列表 throws 异常类型列表 类体成员变量和成员方法 其中:中的内容是可选的。4.3 知识解析访问控制修饰符主要有friendly和public。abstract修饰符,将一个类声明为抽象类,不能用
34、它来实例化一个对象,只能被继承。因为方法没有被实现,需要子类提供方法的实现。final修饰符,将一个类声明为最终类,一个最终类不可能有子类,也就是它不能被继承。final与abstract不能同时修饰一个类,此种类无意义。关键字class告诉编译器这是一个类,类名是可以自由选取但必需是合法的标识符。关键字extends用来表明创建的类是父类派生的子类,是从父类继承下来的。类名是可以自由选取但必需是合法的标识符。4.3 知识解析关键字implements告诉编译器类实现的接口,说明类可实现的一个或多个接口,如果有多个实现接口,要用逗号分隔。关键字throws告诉编译器类将要抛出的异常类型,编程人
35、员可以在类的声明时指定一个或多个异常,当有多个异常类型时用逗号分隔。类体是类的具体实现,主要包括类的成员变量和成员方法。类只有在通过相应方式创建对象后,其所属的方法和属性才能够被其对象访问。4.3 知识解析2、成员变量 成员变量的定义格式如下:访问控制修饰符 static final transient volatile 其中,中的内容是可选的。4.3 知识解析访问控制修饰符主要包括friendly、private、protected和public四种,主要完成变量的访问权限的控制。static(静态)变量:指定该变量被所有对象共享,对所有的实例只使用一个备份,也就是说,静态变量只有一个版本,
36、所有的实例对象引用的都是同一个静态变量。关键字final:一旦成员变量被声明为final,在程序运行中将不能被改变。4.3 知识解析transient:暂时性变量,防止对象序列化。volatile:用来防止编译器在成员上执行某种优化,较少使用。数据类型可以是Java中的简单数据类型、数组、类和接口。成员变量名:在一个类中,成员变量应该是惟一的,且是一合法标识符。4.3 知识解析3、成员方法 成员方法的定义格式如下:访问控制修饰符 static final abstract native synchronized (参数表)throws 异常类型 方法体 其中,中的内容是可选的。4.3 知识解析
37、访问控制修饰符主要包括friendly、private、protected和public四种,主要完成方法的访问权限的控制。static修饰符与成员变量中的static的功能相同。final(最终)方法:成员方法被声明为最终方法后,将不能被了类覆盖,即能被子类继承和使用但不能在子类中修改或重新定义。abstract(抽象)方法:所谓抽象方法是指在类中没有方法体的方法,即只有声明没有实现的方法。native指定此方法实际是用另一种语言(如C)编写的代码存根 4.3 知识解析synchronized使用线程,指定当线程执行时该方法将锁定,防止另一个线程激活它返回值类型:成员方法的返回值类型可以是J
38、ava中简单数据类型、数组、类和接口。若方法没有返回值就用关键字void作为返回值类型。方法名:可以是任何一个有效的标识符,方法名最好有实际意义,以增加程序的可读性,方法名可以与成员变量重名。参数表:参数表中要声明参数的类型,并用逗号分隔多个参数。throws(异常)类型:抛出程序在运行时可能发生异常,每一个异常对象都对应着一个异常类。4.3 知识解析4、构造方法 构造方法的定义格式如下:public className()构造方法可视为一种特殊的方法,它用于对象被创建时初始化成员变量或对象,它具有和它所在的类名完全一样的名字。构造方法定义后,创建对象时就会自动调用它。构造方法没有返回类型,这
39、是因为一个类的构造方法的返回类型就是类本身。4.3 知识解析5、this 在编写类时,有时需要引用此类的方法或变量,Java通过this来实现此功能。this代表了当前对象的一个引用,可将其看作是对象的另一个名字,通过this可以在任何方法中引用当前的对象。this的使用方式可归结为以下几种:-用于访问当前对象的成员变量:this.成员变量;-用于访问当前对象的成员方法:this.成员方法;-用于引用同一个类中的构造方法:this(参数)。4.3 知识解析6、方法重载 在Java 中,同一个类中可以有2个或2个以上的方法用同一个名字,只要它们的参数声明或返回值类型不同,该方法就被称为重载(ov
40、erloaded),这个过程称为方法重载(method overloading)。4.3 知识解析7、内部类 内部类是指在某个类的内部嵌套定义的一个类,内部类可以在一个语句块的内部定义,也可以是其他类的成员,还可以在一个表达式内部匿名定义。其定义格式可表述如下:class 外部类class 内部类 4.3 知识解析内部类不能与包含它的类名相同。内部类可以声明为private和protected。还可以定义为abstract。一个内部类的对象能够访问创建它的外部类对象的所有属性及方法(包括私有部分),也可以使用内部类所在方法的局部变量。4.4 训练任务任务内容(1)创建贪吃蛇中的蛇体类。为蛇体类
41、添加相关属性,如蛇的运动方向标识、蛇头坐标、蛇运行速度等,同时为这些属性提供相关的设置与获取值的方法。(2)创建连连看图片数据的模型类。为该添加相应的数据属性,如游戏级别、总行数总列数、图片数据等,并要求设置这些属性的获取与设置值的方法。4.5阶段任务实施 4.6 知识解析1、对象的创建 Java语言中用创建实例对象的操作符new来创建对象。其格式如下:=4.6 知识解析类是对象的类型名。对象名称,要求是合法标识符。new运算符为新生成的类对象分配到内存空间,使得具体类的定义有实际的物理表示。类构造方法可以是系统默认的构造方法,也可以是用户自定义的,生成对象时是通过执行构造方法来进行初始化的。
42、4.6 知识解析2、对象的使用 对象必须在实例化之后才能够使用,这一点与前面所说的变量一样。其实,变量也可看作是一种特殊数据类型的对象。当对象实例化之后,就可以用点操作符“.”来完成对类成员变量和成员方法的访问操作。对类成员的访问一般形式为:.4.6 知识解析对象名必须先声明,后使用。对象所访问的类成员必须是类定义中所允许的,即必须有相应的成员访问权限 4.6 知识解析3、访问控制 在讲述类的成员变量和成员方法时,都具有相应的访问控制修饰符。Java规定可以选择四种访问方式:public、private、protected和friendly。4.6 知识解析成员变量(方法)的访问控制修饰符 4
43、.6 知识解析Java 类的成员变量(方法)的访问权限 4.6 知识解析5、static 在类的定义中,其成员变量和成员方法如果有static修饰,那么该变量或方法就称为静态变量或方法。相反没有static修饰的变量或方法就称为非静态变量或方法。在Java程序的生命周期中,Java运行环境提供了一个系统的垃圾回收器线程,负责自动回收那些没有引用与之相连对象所占用的内存,这种内存回收的过程就叫垃圾回收。4.6 知识解析6、对象的比较 在Java中我们可以有两种方法来比较两个对象是否相等:一是用“=”运算符;二是用equals方法。在Java程序的生命周期中,Java运行环境提供了一个系统的垃圾回
44、收器线程,负责自动回收那些没有引用与之相连对象所占用的内存,这种内存回收的过程就叫垃圾回收。4.6 知识解析如果是基本类型比较,那么只能用=来比较,即比较基本数据类型的值。如果是对象,则“=”和equals比较的都是对象内存中的首地址(即引用的对象是否为同一个对象)。对于基本类型的包装类型,比如Boolean、Character、Byte、Short、Integer、Long、Float、Double等的引用变量,=是比较地址的,而equals是比较内容的。4.7 训练任务任务内容 完成引导任务4-2的程序设计与调试工作,具体内容见引导任务4-2 4.8阶段任务实施 引导任务4-3实现餐饮管理
45、系统消费结算功能 任务目标:学会使用类的继承与多态性。实现过程:1、在项目repast中新建包ch04.part3,并在该包中新建一个类TestExtendsP,并为该类添加如下代码,最后保存、编译。2、在ch04.part3包中新建一个类TestExtMem,并为该类添加如下代码,最后保存、编译。3、在ch04.part3包中新建一个类TestExt,并为该类添加如下代码,最后保存、编译。4.9 知识解析1、继承 继承是面向对象程序设计的一个重要特征,它是通过继承原有的类而派生出新的类。被继承的类称为父类,派生出新的类为子类,子类继承父类的成员变量和成员方法,同时可以修改父类的变量或重写父类
46、的方法,并可以添加新的变量和方法。4.9 知识解析子类可继承父类中公共(public)类型和保护(protected)类型的成员变量。如果在父类中定义了没有访问权限约束的变量或方法,则子类可以访问父类中的这些方法和变量。子类不能继承父类中被声明为私有(private)类型的成员变量。4.9 知识解析2、隐藏与覆盖 在类的继承中,当子类的成员变量与父类的成员变量同名时,子类的成员变量会隐藏父类的成员变量;当子类的方法与父类的方法同名,参数列表、返回值类型相同时,子类的方法将覆盖父类的方法,当子类重写的方法由子类的对象调用时,它总是参考在子类中的定义,父类中定义的该方法就被覆盖。4.9 知识解析3
47、、super 子类在隐藏了父类的成员变量或重写了父类的方法以后,有时还要用到父类的成员变量,或为简化代码的编写在重写方法中使用父类中的该方法,这时就要访问父类的成员变量或调用父类的方法,Java中通过super关键字来实现对父类成员变量的访问。4.9 知识解析4、抽象类和抽象方法 用abstract关键字修饰类称为抽象类。由abstract关键字修饰的类方法称为抽象方法。一个抽象类可含有抽象方法,但抽象方法不能出现在非抽象类中;一个抽象类不一定要有抽象方法,但一个类如果含有抽象方法就一定要声明为抽象类。4.9 知识解析子类继承了一个抽象类,则该子类需用覆盖的方式来实现该抽象父类中的抽象方法。抽
48、象方法必须在子类中给出具体的实现,若没有实现或没有完全实现抽象方法,则子类还是抽象类。抽象方法可与public和protected修饰符复合使用,但不能与final、private和Static复合使用。4.9 知识解析5、final修饰符 修饰符 final既可修饰类,也可修饰成员变量和成员方法,其用于限制这些被修饰的类、成员变量和成员方法的非继承性,即是最终的一种形式。如果在类的定义时,加上final修饰符,则说明该类是最终类,不能被其他类继承,也不能进行实例化。4.9 知识解析6、多态性 多态是面向对象中的一个重要特征,是指用相同的名字来定义方法,其中每个方法的参数类型和返回值类型均不相
49、同。在Java中,多态性体现在两个方面:由方法重载实现的静态多态性和方法覆盖实现的动态多态性。4.9 知识解析7、初始化的过程 构造方法可能进行初始化工作,而类的成员变量本身也能自动进行初始化,那么,在对象生成时,这初始化过程到底谁先呢?在初始化的过程中,先静态成员,然后是非静态成员,再是构造方法。若有父类,则父类的相关初始化在子类之前。4.10 训练任务任务内容 完成引导任务4-2的程序设计与调试工作,具体内容见引导任务4-2 4.10 训练任务任务内容 用继承创建食物类Food,要求继承Point类,以方便记录食物的坐标位置,参考程序如下。为食物类Food添加主方法,以测试食物的颜色、随机
50、产生的食物的位置等。程序写法参见引导任务4-2与引导任务4-3。4.11阶段任务实施 引导任务4-4自定义一个用于消费结算的接口 任务目标:能定义并使用接口。实现过程:1、在项目repast中新建包ch04.part4,并在该包中新建一个类TestCountInter,并为该接口添加如下代码,最后保存、编译。2、在NetBeans中新建类CountInterImplOne,并为该类添加如下代码,最后保存、编译。3、在NetBeans中新建类CountInterImplTwo,并为该类添加如下代码,最后保存、编译。4、在NetBeans中新建类CountInterDemo,并为该类添加如下代码,
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。