




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章类、对象和方法,.,回顾,循环语句while、do-while、for的区别是什么?,inti=0,j=0;while(i4)System.out.println(*);i+;continue;System.out.println(*);j+;i+;,*,写出运行结果,输出,.,本章任务,以OO方式实现:YunTu学校类,描述YunTuSchool中心基本信息学生类,输出学生信息教员类,输出教员信息计算并显示总成绩计算并显示平均成绩,.,本章任务,实现客户信息的添加和查询实现图形生成器实现模拟账户存取款功能,.,本章目标,掌握类和对象的特征理解封装会创建和使用对象会定义和使用类无参和带参方法理解变量作用域会创建包组织Java工程会添加类方法的JavaDoc注释会阅读JavaSE6文档使用String类提供的方法处理字符串,.,万物皆对象,世界是由什么组成的?,.,身边的对象,布兰尼,朱丽叶,顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品,姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印账单,.,对象的特征属性,属性对象具有的各种特征每个对象的每个属性都拥有特定值例如:布兰尼和朱丽叶的体重不一样,60kg,布兰尼,属性,35岁,.,对象的特征方法,方法对象执行的操作,打单,收银,方法,刷卡,.,对象的属性和方法,列出尼古拉斯凯奇驾驶的这辆法拉利F360Spider的属性和方法列出小狗对象的属性和方法,属性:品牌:法拉利型号:F360Spider颜色:黄色价格:380万元方法:发动停止加速,属性:颜色:白色方法:叫跑吃,.,小结,说一说教室里的对象描述他们的属性和方法,颜色:黑色品牌:BENQ投影,姓名:张三年龄:20学习,类型:白炽灯开关变亮变暗,材制:木质支撑物品,.,封装,对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割,谁看见过只有“完好的零件和颜色”而不能开动的汽车?,.,从对象抽象出“类”,抽取出下列对象的属性和方法的共同特征,轿车,顾客,.,类,顾客类轿车类,类是模子,确定对象将会拥有的特征(属性)和行为(方法),类是对象的类型不同于int类型:具有方法,各种口味的球状冰淇淋,球状冰淇淋模子,.,小结,类和对象有什么区别呢?类是抽象的概念,仅仅是模板,比如说:“人”对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”,小布什,普京,克林顿,.,Java是面向对象的语言,所有Java程序都以类class为组织单元关键字class定义自定义的数据类型,publicclassHelloYuntupublicstaticvoidmain(Stringargs)System.out.println(使用Java语言理解程序逻辑);,.,Java类模板,类将现实世界中的概念模拟到计算机程序中,publicclass类名/定义属性部分属性1的类型属性1;属性2的类型属性2;属性n的类型属性n;/定义方法部分方法1;方法2;方法m;,.,定义类,定义一个类的步骤1、定义类名2、编写类的属性3、编写类的方法,.,类示例2-1,云图智联在不同培训中心(北京中心,九江中心等),你会感受到相同的环境和教学氛围,用类的思想输出Yuntu中心信息,演示示例1:使用Eclipse创建YuntuSchool类框架,.,类示例2-2,publicclassYuntuSchool/定义云图智联中心的属性StringschoolName;/中心的全称intclassNum;/教室的数目intlabNum;/机房的数目/定义云图智联中心的方法publicvoidshowCenter()returnschoolName+培训Yuntu学员+n+配备:+classNum+教+labNum+机;,定义类的showCenter()方法,用于输出类相关的信息,成员变量,.,常见错误,publicclass.BookStringbookName;StringauthorName;intpageNum;booleanisAvailable;,类命名规则:1、不能使用Java关键字2、首字母可以为字母,也可以是“_”或“$”(建议不要这样)3、不能包含空格或“.”号,代码错误,.,如何创建和使用对象,使用对象的步骤:使用new创建类的一个对象使用对象:使用“.”进行以下操作给类的属性赋值:对象名.属性调用类的方法:对象名.方法名(),YuntuSchoolcenter=newYuntuSchool();,center.schoolName=北京中心;/给属性赋值center.showCenter();/调用类的方法,该方法中的操作将被执行,.,publicclassInitialYuntuSchoolpublicstaticvoidmain(Stringargs)YuntuSchoolcenter=newYuntuSchool();System.out.println(center.showCenter();center.schoolName=北京中心;center.classNum=10;center.labNum=10;System.out.println(center.showCenter();,创建和使用对象示例,创建“北京中心”对象,演示示例2:创建和使用对象,说一说看到什么效果?,.,综合案例,编写学生类,输出学生相关信息编写教员类,输出教员相关信息,演示示例3:创建和使用类和对象,.,面向对象(OO)的优点,便于程序模拟现实世界中的实体用“类”表示实体的特征和行为隐藏细节对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不需关注内部细节如何实现可重用可以通过类的模板,创建多个类的对象,.,数据类型总结,intdoublechar,String使用class定义的类型StudentTeacherYuntuSchool数组,基本数据类型,引用数据类型,.,类的方法,写出狮子对象的“跑”方法写出狮子对象的“叫”方法,电动玩具狮子属性:颜色:黄色行为:跑叫,按此按钮,狮子开始跑,.,类的方法示例,publicclassAutoLionStringcolor=黄色;publicvoidrun()System.out.println(正在以0.1米/秒的速度向前奔跑);publicStringbark()Stringsound=吼;returnsound;,AutoLion类代码实现,方法名称,方法体,返回类型,.,如何定义类的方法,类的方法定义类的某种行为(或功能),方法的名称,方法的主体,方法返回的数据类型,定义类的方法,public返回值类型方法名()/这里编写方法的主体,步骤一:定义方法名以及返回值,步骤二:编写方法体,.,方法的命名,如何给方法起名字?必须以字母、_或开头可以包括数字,但不能以它开头遵循的命名规范通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写,.,方法的返回值,两种情况如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型如果方法没有返回值,返回类型为void,publicclassStudentStringname=张三;publicvoidgetName()returnname;,返回类型要匹配,return表达式;,编译错误,.,常见错误2-1,publicclassYuntuSchoolpublicstaticvoidmain(Stringargs)return云图智联北京中心!;,返回类型是void方法中不能有返回值,.,常见错误2-2,publicclassStudentpublicdoublegetInfo()doubleweight=95.5;doubleheight=1.69;returnweight,height;,方法至多可以返回一个值,不能返回多个值,.,方法调用,方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果方法调用:执行方法中包含的语句,对象名.方法名();,小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作,演示示例1:演示运行效果,.,方法调用,publicclassAutoLionStringcolor=黄色;publicvoidrun()/方法1:跑System.out.println(正在以0.1米/秒的速度向前奔跑。);publicStringbark()/方法2:叫Stringsound=吼;returnsound;publicStringgetColor()/方法3:获得颜色属性returncolor;publicStringshowLion()/方法4:描述狮子特性return这是一个+getColor()+的玩具狮子!;,publicclassTestLionpublicstaticvoidmain(Stringargs)AutoLionlion=newAutoLion();System.out.println(lion.showLion();lion.run();System.out.println(lion.bark();,在类的方法中调用该类另一个方法,在main()方法中调用类的方法,演示示例2:设置断点演示方法调用执行过程,.,方法调用小结,方法之间允许相互调用,不需要知道方法的具体实现,提高了效率,.,变量作用域3-1,publicclassAutoLionStringcolor=黄色;publicvoidrun()/方法1:跑System.out.println(正在以0.1米/秒的速度向前奔跑。);publicStringbark()/方法2:叫Stringsound=吼;returnsound;publicStringgetColor()/方法3:获得颜色属性returncolor;publicStringshowLion()/方法4:输出类的描述信息return这是一个+getColor()+的玩具狮子!叫声是+sound;,可以调用吗?,演示示例3:变量作用域,.,变量作用域3-2,变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量的区域,for(inti=0,a=0;i4;i+)a+;System.out.println(a);,a的作用域仅在for循环中,代码错误,.,变量作用域3-3,变量1类型变量1;变量2类型变量2;变量3类型变量3;,public返回类型方法1()变量4类型变量4;public返回类型方法2()变量5类型变量5;,publicclassAutoLion,AutoLion类的方法别的类的方法,谁能使用这些变量?,方法1,方法2,成员变量,局部变量,局部变量,.,方法调用案例,编写成绩计算类(ScoreCalc)编写测试类,演示示例4:方法调用,.,小结,编写手机类(Phone):它可以下载音乐,可以播放这些音乐,可以进行充电编写电池类(Cell):自动续电编写测试类(Test),演示示例5:演示效果,.,为什么要用带参数的方法,ScoreCalc类和Test类,publicstaticvoidmain(Stringargs)Scannerinput=newScanner(System.in);System.out.print(请输入Java成绩:);intjava=input.nextInt();/*计算并显示输出*/inttotal=java+c+db;doubleavg=total/3;System.out.print(总成绩:+total);System.out.print(n平均分:+avg);,一次还可以接受,如果还要再执行这个功能,难道还要重复再写?,.,工作原理,新鲜桃汁,新鲜苹果汁,新鲜梨汁,输出三种果汁,如何使用带参数的方法3-1,.,、,定义带参数的方法调用带参数的方法,publicclassZhazhipublicStringzhazhi(Stringfruit)Stringjuice=fruit+汁;returnjuice;,/*调用zhazhi方法*/ZhazhimyZhazhi=newZhazhi();StringmyFruit=苹果;StringmyJuice=myZhazhi.zhazhi(myFruit);System.out.println(myJuice);,参数列表:(数据类型参数1,数据类型参数2),调用方法,传递的参数要与参数列表一一对应,如何使用带参数的方法3-1,.,如何使用带参数的方法3-2,返回类型()/方法的主体,该方法允许被访问调用的权限范围,方法返回值的类型,publicclassStudentsBizStringnames=newString30;publicvoidaddName(Stringname)/增加学生姓名publicvoidshowNames()/显示全部学生姓名,传送给方法的形参列表,一个形式参数,没有返回值,.,如何使用带参数的方法3-3,publicstaticvoidmain(Stringargs)StudentsBizst=newStudentsBiz();Scannerinput=newScanner(System.in);for(inti=0;i5;i+)System.out.print(请输入学生姓名:);StringnewName=input.next();st.addName(newName);st.showNames();,实参的类型、数量、顺序都要与形参一一对应,先实例化对象,再使用方法,调用带参数的方法,对象名.方法名(实参1,实参2,,实参n),实参列表,演示示例1:带一个参数的方法,.,设计方法,通过传递三个参数(开始位置、结束位置,查找的姓名)来实现,带多个参数的方法2-1,2、指定查找区间,查找学生姓名并显示,.,publicbooleansearchName(intstart,intend,Stringname)booleanfind=false;/是否找到标识/指定区间数组中,查找姓名for(inti=start;i=end;i+)if(namesi.equals(name)find=true;break;returnfind;,返回值类型,带有三个形参,返回结果:boolean类型,带多个参数的方法2-2,if(st.searchName(s,e,name)System.out.println(找到了!);elseSystem.out.println(没找到该学生!);,传递三个实参,演示示例3:带多个参数的方法,.,/方法定义publicvoidaddName(Stringname)/方法体/方法调用对象名.addName(String张三);,调用方法时不能指定实参类型!,常见错误4-1,对象名.addName(张三);,.,/方法定义publicbooleansearchName(intstart,intend,Stringname)/方法体/方法调用Strings=开始;inte=3;Stringname=张三;booleanflag=对象名.searchName(s,e,name);,形参和实参数据类型不一致!,常见错误4-2,.,/方法定义publicbooleansearchName(intstart,intend,Stringname)/方法体/方法调用ints=1;inte=3;booleanflag=对象名.searchName(s,e);,形参和实参数量不一致!,常见错误4-3,.,/方法定义publicbooleansearchName(intstart,intend,Stringname)/方法体/方法调用ints=1;inte=3;Stringname=张三;对象名.searchName(s,e,name);,调用方法后没有对返回值作任何处理!,常见错误4-4,.,使用Arrays类提供的sort()方法实现定义一个独立的方法来实现姓名排序,该方法的返回值为数组类型,数组类型的方法返回值2-1,1、编写方法,实现学生的姓名排序,.,publicclassStudentsBizStringnames=newString5;/学生姓名数组publicvoidinputNames()/接收用户输入的5个学生姓名,存放于names中/字符串数组作为返回值publicStringgetNames()Arrays.sort(names);returnnames;,返回字符串数组,publicclassTestSortpublicstaticvoidmain(Stringargs)StudentsBizst=newStudentsBiz();st.inputNames();Stringnamesbysort=st.getNames();System.out.println(*排序后*);for(inti=0;inamesbysort.length;i+)if(namesbysorti!=null)System.out.print(namesbysorti+t);,数组类型的方法返回值2-2,调用方法,返回结果,处理返回结果,演示示例4:数组类型的方法返回值,.,定义学生类,添加属性:三门课的成绩定义学生成绩计算类,添加方法,传递对象参数定义测试类,对象类型的参数3-1,2、编写学生成绩计算类,计算学生平均分,.,publicclassStudents/定义三门课成绩属性floatjava=0;floatdatabase=0;floathtml=0;,三门课成绩,publicclassScore/计算平均分,对象作为参数publicfloatgetAvg(Studentsstu)floatavg=0;avg=(stu.java+stu.database+stu.html)/3;returnavg;,对象类型的参数3-2,返回结果,对象类型的参数,publicclassTestScorepublicstaticvoidmain(Stringargs)Studentsstu=newStudents();Scoresc=newScore();floatavg=0;stu.java=80;stu.database=95;stu.html=77;avg=sc.getAvg(stu);System.out.println(该学生的平均分为:+avg);,调用方法,传递参数,返回结果,演示示例5:对象类型的参数,.,对象类型的参数3-3,publicclassTestScorepublicstaticvoidmain(Stringargs)Studentsstu=newStudents();Scoresc=newScore();floatavg=0;stu.java=80;stu.database=95;stu.html=77;avg=sc.getAvg(stu);System.out.println(该学生的平均分为:+avg);,publicclassScore/计算平均分,对象作为参数publicfloatgetAvg(Studentsstu)floatavg=0;avg=(stu.java+stu.database+stu.html)/3;returnavg;,main:stu,0 x2a486c,0,main:avg,84.0,getAvg:stu,0 x2a486c,0,getAvg:avg,84.0,省略内存分配,内存分配图,.,Students类中定义身高属性Height类中定义方法,传递学生对象数组,求平均身高测试类调用Height类的方法,对象数组类型的参数2-1,3、计算学生的平均身高,.,publicclassHeightpublicfloatgetAvgHeight(Studentsstu)floatavgHeight=0;floatall=0;/所有学生的总身高intcount=0;/学生计数for(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年村级秘书考试模拟练习题集
- 2025年动作捕捉师面试问题及答案集
- 2025年职业规划必修课选调生财务管理方向考试预测题及解析
- 2025年教育心理学面试题及答案
- 2025年村级护路员桥梁面试高频题
- 2025年汽车维修技师技术水平认证试题及答案解析
- 2025年汽车改装师执业技能考核试题及答案解析
- 2025年美容护肤师专业知识考核试卷及答案解析
- 2025年客服安全操作题库含答案
- 2025年建筑装饰设计师执业能力测评题及答案解析
- 2024新苏教版一年级数学上册全册教案(共21课时)
- 船舶行业维修保养合同
- 影响宠物毛发质量的因素研究进展
- 网约车司机礼仪培训
- 山东省二年级下册数学期末考试试卷
- 交通事故现场勘查课件
- GB/T 44621-2024粮油检验GC/MS法测定3-氯丙醇脂肪酸酯和缩水甘油脂肪酸酯
- 餐饮加盟协议合同书
- 知道网课智慧《睡眠医学(广州医科大学)》测试答案
- 糖尿病医疗广告宣传指南
- T CEC站用低压交流电源系统剩余电流监测装置技术规范
评论
0/150
提交评论