1、第十一章第十一章类和对象的区别是什么?类和对象的区别是什么?数据类型有哪两类?如何使用?数据类型有哪两类?如何使用?public class &Student String name; char sex; int age; public String tostring ( ) return name + t + sex + t + age; public static void main(String args) Student stu = new Student(); name = 神仙姐姐神仙姐姐; sex = F; age = 18; System.out.println(stu); S
2、tudent toStringstu.namestu.sexstu.age实现输出学生信息,下面代码有哪些错误?实现输出学生信息,下面代码有哪些错误?回顾与作业点评回顾与作业点评预习检查预习检查类的方法由哪几部分组成?类的方法由哪几部分组成?成员变量和局部变量的区别有哪些?成员变量和局部变量的区别有哪些?JavaDoc怎样写注释?怎样写注释?本章任务本章任务实现计算平均分和课程总成绩实现计算平均分和课程总成绩实现实现MyShopping系统菜单切换系统菜单切换实现实现MyShopping系统入口程序系统入口程序 会定义和使用类的方法会定义和使用类的方法理解变量作用域理解变量作用域会添加会添加J
3、avaDoc注释注释本章目标本章目标类的方法类的方法1、写出狮子对象的、写出狮子对象的“跑跑”方法、方法、 “叫叫”方法方法电动玩具狮子电动玩具狮子属性:属性:颜色:黄色颜色:黄色行为:行为:跑跑叫叫按此按钮,按此按钮,狮子开始叫狮子开始叫按此按钮,按此按钮,狮子开始跑狮子开始跑类的方法示例类的方法示例public class AutoLion String color = 黄色黄色; public void run() System.out.println(正在以正在以0.1米米/秒的速度向前奔跑秒的速度向前奔跑); public String bark() String sound = 大
4、声吼叫大声吼叫 ; return sound; AutoLion类代码实现类代码实现方法体方法体返回类型返回类型演示示例演示示例1:定义类的方法:定义类的方法方法名称方法名称如何定义类的方法如何定义类的方法类的方法定义类的某种行为(或功能)类的方法定义类的某种行为(或功能) 方法的定义方法的定义 方法的名称方法的名称 方法的主体方法的主体 方法返回的数据类型方法返回的数据类型 定义类的方法定义类的方法public 返回值类型返回值类型 方法名方法名() /这里编写方法的主体这里编写方法的主体步骤一:定义方步骤一:定义方法名以及返回值法名以及返回值步骤二:编写方步骤二:编写方法体法体方法的返回值
5、方法的返回值两种情况两种情况如果方法具有返回值,方法中必须使用关键字如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为如果方法没有返回值,返回类型为voidpublic class Student String name = 张三张三; public void getName() return name; 返回类型要匹配返回类型要匹配return 表达式;表达式;编译错误编译错误作用:作用: 跳出方法跳出方法给出结果给出结果方法调用方法调用方法是个方法是个“黑匣子黑匣子”,完成某个特定的应用程序
6、,完成某个特定的应用程序功能,并返回结果功能,并返回结果方法调用:执行方法中包含的语句方法调用:执行方法中包含的语句 对象名对象名.方法名方法名();2、小明过生日,爸爸送他一个电动狮子玩具,、小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作编程测试这个狮子能否正常工作 方法调用方法调用public class AutoLion String color = 黄色黄色; /颜色颜色 /*跑跑*/ public void run() System.out.println(正在以正在以0.1米米/秒的速度向前奔跑。秒的速度向前奔跑。); /*叫叫*/ public String
7、bark() String sound = 大声吼叫大声吼叫 ; return sound; /*获得颜色获得颜色*/ public String getColor() return color; /*显示狮子特性显示狮子特性*/ public String showLion() return 这是一个这是一个 + getColor() + 的玩具狮子的玩具狮子!; public class TestLion public static void main(String args) AutoLion lion = new AutoLion(); System.out.println(lion.
8、showLion(); lion.run(); System.out.println(lion.bark(); 在类的方法中调用在类的方法中调用该类另一个方法该类另一个方法演示示例演示示例2:方法调用:方法调用在在main()方法中方法中调用类的方法调用类的方法 方法调用小结方法调用小结方法之间允许相互调用,不需要知道方法的具方法之间允许相互调用,不需要知道方法的具体实现,提高了效率体实现,提高了效率 情情 况况 举举 例例Student类的方法类的方法a( )调用调用Student类的方法类的方法b( ),直接,直接调用调用public voidpublic void a( ) a( ) b
9、( ); / b( ); /调用调用b( )b( ) Student类的方法类的方法a( )调用调用Teacher类的方法类的方法b( ),先,先创建类对象,然后使用创建类对象,然后使用“.”调用调用public voidpublic void a( ) a( ) Teacher t = Teacher t = newnew Teacher( ); Teacher( ); t.bt.b( ); /( ); /调用调用TeacherTeacher类的类的b()b() public class Studentpublic void showInfo() return 我是一名学生我是一名学生; 方
10、法的返回类型为方法的返回类型为void,方法中不能有,方法中不能有return返回值!返回值!常见错误常见错误4-1public class Studentpublic double getInfo() double weight = 95.5; double height = 1.69; return weight, height; 方法不能返回多个值方法不能返回多个值!常见错误常见错误4-2public class Studentpublic String showInfo()return 我是一名学生我是一名学生;public double getInfo() double weight
11、 = 95.5; double height = 1.69; return weight; 多个方法不能相互嵌套定义多个方法不能相互嵌套定义!常见错误常见错误4-3public class Studentpublic String showInfo()return 我是一名学生我是一名学生;public double getInfo()double weight = 95.5; double height = 1.69; return weight;public class Studentint age=20;if(age20) System.out.println(年龄不符合入学要求!年龄不
12、符合入学要求!); public void showInfo()return 我是一名学生我是一名学生;不能在方法外部直接写程序逻辑代码不能在方法外部直接写程序逻辑代码!常见错误常见错误4-4小结小结1编写电池类(编写电池类(Cell):):具有品牌属性,可以续电具有品牌属性,可以续电编写测试类(编写测试类(TestCell)电池类电池类属性:属性:品牌品牌行为:行为:续电续电参考代码参考代码1参考代码参考代码2成员变量和局部变量成员变量和局部变量2-1变量声明的位置决定变量作用域变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量变量作用域确定可在程序中按变量名访问该变量的
13、区域的区域for(int i = 0, a = 0; i 4; i+) a+;System.out.println ( a );代码错误代码错误a的作用域仅在的作用域仅在for循环中循环中 成员变量和局部变量成员变量和局部变量2-2变量变量1类型类型 变量变量1; 变量变量2类型类型 变量变量2;变量变量3类型类型 变量变量3;public 返回类型返回类型 方法方法1() 变量变量4类型类型 变量变量4;public 返回类型返回类型 方法方法2() 变量变量5类型类型 变量变量5; public class AutoLion AutoLion类的方法,类的方法,其他类的方法其他类的方法 谁
14、能使用这些变量?谁能使用这些变量? 方法方法1 方法方法2 成员变量成员变量 局部变量局部变量 局部变量局部变量 作用域不同作用域不同局部变量的作用域仅限于定义它的方法局部变量的作用域仅限于定义它的方法成员变量的作用域在整个类内部都是可见的成员变量的作用域在整个类内部都是可见的初始值不同初始值不同Java会给成员变量一个初始值会给成员变量一个初始值Java不会给局部变量赋予初始值不会给局部变量赋予初始值在同一个方法中,不允许有同名局部变量;在不同的方在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量法中,可以有同名局部变量两类变量同名时,局部变量具有更高的优先级两类变量同
15、名时,局部变量具有更高的优先级成员变量和局部变量成员变量和局部变量的区别的区别public class Test int score1 = 88; int score2 = 98; public void calcAvg() int avg = (score1 + score2)/2; public void showAvg() System.out.println(平均分是:平均分是: + avg); 常见错误常见错误局部变量局部变量avg的作用域仅限于的作用域仅限于calcAvg()方法方法指导指导计算平均分和总成绩计算平均分和总成绩 训练要点:训练要点:方法的定义和调用方法的定义和调用需
16、求说明:需求说明:从键盘接收三门课分数,计算三门课的平均分和从键盘接收三门课分数,计算三门课的平均分和总成绩,编写成绩计算类实现功能总成绩,编写成绩计算类实现功能 实现思路:实现思路:1、创建类、创建类 ScoreCalc2、编写方法实现各功能、编写方法实现各功能3、编写测试类、编写测试类难点指导:难点指导:面向对象编程思维面向对象编程思维讲解需求说明讲解需求说明完成时间:完成时间:25分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解面向对象的编程思维面向对象的编程思维ScoreCalc类类 和和
17、Test类类public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(请输入请输入Java成绩:成绩:); int java = input.nextInt(); /*计算并显示输出计算并显示输出*/ int total = java + c + db; double avg = total / 3; System.out.print(总成绩:总成绩: + total); System.out.print(n平均分平均分: + avg);一次还可以接受,如果一次还可
18、以接受,如果还要再执行这个功能,还要再执行这个功能,难道还要重复再写?难道还要重复再写?calcDiffTimecalcTotalScore()ScoreCalcshowTotalScore()calcAvg()showAvg() main() /程序入口程序入口 /计算并输出总成绩计算并输出总成绩 /计算并输出平均分计算并输出平均分 Test调用调用调用调用类的方法实现某个特定的功能,类的方法实现某个特定的功能,其他类不需要知道它如何实现!其他类不需要知道它如何实现!知道了实现此功能的类和它的方法名,知道了实现此功能的类和它的方法名, 就可以直接调用了,不用重复写代码!就可以直接调用了,不用
19、重复写代码! 小结小结2编写手机类(编写手机类(Phone):可以下载音乐,可以播放这):可以下载音乐,可以播放这些音乐,可以进行充电些音乐,可以进行充电重用电池类方法(重用电池类方法(Cell)编写测试类(编写测试类(TestPhone)手机类手机类行为:行为:播放下载的音乐播放下载的音乐下载下载充电充电电池类电池类属性:属性:品牌品牌行为:行为:续电续电参考代码参考代码1参考代码参考代码2练习练习定义管理员类定义管理员类 需求说明:需求说明:根据下图所示信息,编写管理员类根据下图所示信息,编写管理员类Manager,使,使用用show()方法返回管理员信息方法返回管理员信息 编写测试类编写
20、测试类ManagerTest输出管理员信息输出管理员信息完成时间:完成时间:10分钟分钟指导指导实现菜单的级联效果实现菜单的级联效果训练要点:训练要点:方法的定义和调用方法的定义和调用循环结构循环结构需求说明:需求说明:实现实现MyShopping菜单,输菜单,输入菜单项编号,可以自由切入菜单项编号,可以自由切换各个菜单换各个菜单 实现思路:实现思路:1、创建菜单类、创建菜单类Menu 2、编写方法实现各功能、编写方法实现各功能3、编写测试类、编写测试类难点指导:难点指导:面向对象编程思维面向对象编程思维讲解需求说明讲解需求说明完成时间:完成时间:30分钟分钟练习练习实现系统入口程序实现系统入
21、口程序需求说明:需求说明:编写类编写类StartSMS,实现,实现输入用户名和密码,符输入用户名和密码,符合条件的进入系统合条件的进入系统 完成时间:完成时间:20分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解JavaDoc注释注释回顾学过的注释方式回顾学过的注释方式单行注释:单行注释:/这里是单行注释这里是单行注释多行注释:多行注释:/*这里是多行注释,这里是多行注释, 可以多行可以多行*/JavaDoc注释:使用注释:使用“/*”开始和开始和“*/”结束,结束,用来注释类、属性和方法等用来注释
22、类、属性和方法等/* *CalcScore类类 *author Chris *version 1.0 2007/06/21 */描述信息描述信息 author :描述作者信息:描述作者信息 version :描述版本信息:描述版本信息 3、为、为ScoreCalc类添加类添加JavaDoc注释注释 添加添加JavaDoc注释注释/* * ScoreCalc类类 * author 北大青鸟北大青鸟 * version 2.0 2010/06/01 */public class ScoreCalc /* Java成绩成绩 */int java;./* * 计算总成绩计算总成绩 * return t
23、otal */public int calcTotalScore() int total = java + c + db;return total;.演示示例演示示例3:添加:添加JavaDoc注释注释 方法的方法的JavaDoc注释注释属性的属性的JavaDoc注释注释类的类的JavaDoc注释注释如何生成如何生成JavaDoc文档文档 JavaDoc能够从源代码中抽取类、属性、方法能够从源代码中抽取类、属性、方法等的注释,形成一个和配套的等的注释,形成一个和配套的API帮助文档帮助文档 生成生成JavaDoc文档文档使用命令行方式生成使用命令行方式生成使用使用Eclipse工具生成工具生成
24、演示示例演示示例4:使用:使用Eclipse生成生成JavaDoc文档文档练习练习添加并生成添加并生成JavaDoc文档文档 需求说明:需求说明:为我行我素购物系统的为我行我素购物系统的Manager类、类、Menu类添类添加加JavaDoc注释注释使用使用Eclipse工具,生成两个类的工具,生成两个类的JavaDoc文档文档完成时间:完成时间:15分钟分钟总结总结定义类的方法的步骤是什么?定义类的方法的步骤是什么?类的一个方法如何调用本类的另一个方法?类的一个方法如何调用本类的另一个方法?类中的一个方法如何调用另一个类的方法?类中的一个方法如何调用另一个类的方法?成员变量和局部变量的区别有哪些?成员变量和局部变量的区别有哪些?如何给类的方法添加如何给类的方法添加JavaDoc注释?注释? 作业作业课后作业课后作业必做必做教员备课时在此添加内容教员备课时在此添加内容选做选做教员备课时在此添加内容教员备课时在此添加内容提交时间:提交时间:xxx提交形式:提交形式:xxx预习作业预习作业背诵英文单词背诵英文单词教员备课时在此添加内容教员备课时在此添加内容