版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第四章 类、对象和方法 回顾 循环语句while、do-while、for的区别是什么? int i = 0, j = 0; while(i4) System.out.println(*); i+; continue; System.out.println(*); j+; i+; * * * * * * * 写出运行结果写出运行结果 输出输出 本章任务 以OO方式实现: YunTu学校类,描述YunTuSchool中心基本信息 学生类,输出学生信息 教员类,输出教员信息 计算并显示总成绩 计算并显示平均成绩 本章任务 实现客户信息的添加和查询 实现图形生成器 实现模拟账户存取款功能 本章目标
2、 掌握类和对象的特征 理解封装 会创建和使用对象 会定义和使用类无参和带参方法 理解变量作用域 会创建包组织Java工程 会添加类方法的JavaDoc注释 会阅读JavaSE6文档 使用String类提供的方法处理字符串 万物皆对象 世界是由什么组成的? 名胜名胜 人人 物品物品 动物动物 ,植物,植物 身边的对象 布兰尼布兰尼 朱丽叶朱丽叶 顾客顾客 姓名:朱丽叶姓名:朱丽叶 年龄:年龄:28 体重:体重:52千克千克 操作:操作: 购买商品购买商品 姓名:布兰尼姓名:布兰尼 职衔:收银员职衔:收银员 年龄:年龄:35 体重:体重:60千克千克 操作:操作: 收款收款 打印账单打印账单 对象
3、的特征属性 属性对象具有的各种特征 每个对象的每个属性都拥有特定值 例如:布兰尼和朱丽叶的体重不一样 60kg 布兰尼布兰尼 属性属性 35岁岁 收银员布兰尼收银员布兰尼 对象的特征方法 方法对象执行的操作 打单打单 收银收银 方法方法 刷卡刷卡 收银员布兰尼收银员布兰尼 对象的属性和方法 列出尼古拉斯凯奇驾驶的这辆法拉利F360 Spider的属性和 方法 列出小狗对象的属性和方法 属性:属性: 品牌:法拉利品牌:法拉利 型号:型号:F360 Spider 颜色:黄色颜色:黄色 价格:价格:380万元万元 方法:方法: 发动发动 停止停止 加速加速 属性:属性: 颜色:白色颜色:白色 方法:
4、方法: 叫叫 跑跑 吃吃 小结 说一说教室里的对象 描述他们的属性和方法 颜色:黑色颜色:黑色 品牌:品牌:BENQ 投影投影 姓名:张三姓名:张三 年龄:年龄:20 学习学习 类型:白炽灯类型:白炽灯 开开 关关 变亮变亮 变暗变暗 材制材制: 木质木质 支撑物品支撑物品 封装 对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者 相辅相承,不能分割 谁看见过只有谁看见过只有“完好完好 的零件和颜色的零件和颜色”而不而不 能开动的汽车?能开动的汽车? 从对象抽象出“类” 抽取出下列对象的属性和方法的共同特征抽取出下列对象的属性和方法的共同特征 顾客顾客
5、 类 顾客类 轿车类 类是模子,确定对象将会拥有的类是模子,确定对象将会拥有的 特征(属性)和行为(方法)特征(属性)和行为(方法) 类是对象的类型 不同于不同于int类型:具有方法类型:具有方法 各种口味的球状冰淇淋各种口味的球状冰淇淋 球状冰淇淋模子球状冰淇淋模子 小结 类和对象有什么区别呢? 类是抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,比如:“小布什” 小布什小布什 普京普京 克林顿克林顿 “人人”类类 特征(属性)特征(属性) 年龄年龄 体重体重 行为(方法)行为(方法) 衣衣 食食 住住 行行 Java 是面向对象的语言 所有Java程序都以
6、类class为组织单元 关键字class定义自定义的数据类型 public class HelloYuntu public static void main(String args) System.out.println(使用使用Java语言理解程序逻辑语言理解程序逻辑); Java类模板 类将现实世界中的概念模拟到计算机程序中 public class 类名类名 /定义属性部分定义属性部分 属性属性1的类型的类型 属性属性1; 属性属性2的类型的类型 属性属性2; 属性属性n的类型的类型 属性属性n; /定义方法部分定义方法部分 方法方法1; 方法方法2; 方法方法m; 定义类 定义一个类的
7、步骤 1、定义类名 2、编写类的属性 3、编写类的方法 类示例2-1 云图智联在不同培训中心(北京中心,九江中心等),你 会感受到相同的环境和教学氛围,用类的思想输出Yuntu 中心信息 YuntuSchool类类 属性:属性: 全称全称 教室数目教室数目 机房数目机房数目 方法:方法: 展示中心信息展示中心信息 演示示例演示示例1:使用:使用Eclipse创建创建YuntuSchool类框架类框架 类示例2-2 public class YuntuSchool /定义定义云图智联云图智联中心的属性中心的属性 String schoolName; / 中心的全称中心的全称 int classN
8、um; /教室的数目教室的数目 int labNum; /机房的数目机房的数目 / 定义定义云图智联云图智联中心的方法中心的方法 public void showCenter() return schoolName + 培训培训Yuntu学员学员 + n + 配备:配备:+ classNum + 教教 + labNum + 机机; 定义类的定义类的showCenter()方法,方法, 用于输出类相关的信息用于输出类相关的信息 成员变量成员变量 常见错误 public class .Book String bookName; String authorName; int pageNum; boo
9、lean isAvailable; 类命名规则:类命名规则: 1、不能使用、不能使用Java关键字关键字 2、首字母可以为字母,也可以是、首字母可以为字母,也可以是“_”或或“$ ”(建议不要这建议不要这 样样) 3、不能包含空格或、不能包含空格或“.”号号 代码错误代码错误 如何创建和使用对象 使用对象的步骤: 使用new创建类的一个对象 使用对象:使用“.”进行以下操作 给类的属性赋值:对象名.属性 调用类的方法:对象名.方法名() YuntuSchool center = new YuntuSchool(); center.schoolName = 北京中心北京中心; /给属性赋值给属性
10、赋值 center.showCenter(); /调用类的方法,该方法中的操作将被调用类的方法,该方法中的操作将被 执行执行 public class InitialYuntuSchool public static void main(String args) YuntuSchool center = new YuntuSchool(); System.out.println(center.showCenter(); center.schoolName = 北京中心北京中心; center.classNum = 10; center.labNum = 10; System.out.print
11、ln(center.showCenter(); 创建和使用对象示例 创建创建“北京中心北京中心”对象对象 演示示例演示示例2:创建和使用对象:创建和使用对象 说一说看到说一说看到 什么效果?什么效果? 综合案例 编写学生类,输出学生相关信息 编写教员类,输出教员相关信息 学生类学生类 属性:属性: 姓名姓名 年龄年龄 参加的课程参加的课程 兴趣兴趣 方法:方法: 显示学员个人信息显示学员个人信息 教员类教员类 属性:属性: 姓名姓名 专业方向专业方向 教授的课程教授的课程 教龄教龄 方法:方法: 显示教员个人信息显示教员个人信息 演示示例演示示例3:创建和使用类和对象:创建和使用类和对象 面向
12、对象(OO)的优点 便于程序模拟现实世界中的实体 用“类”表示实体的特征和行为 隐藏细节 对象的行为和属性被封装在类中,外界通过调用类的方法来获得,不需关注 内部细节如何实现 可重用 可以通过类的模板,创建多个类的对象 数据类型总结 int double char String 使用使用class定义的类型定义的类型 Student Teacher YuntuSchool 数组数组 基本数据类型基本数据类型 引用数据类型引用数据类型 类的方法 写出狮子对象的“跑”方法 写出狮子对象的“叫”方法 电动玩具狮子电动玩具狮子 属性:属性: 颜色:黄色颜色:黄色 行为:行为: 跑跑 叫叫 按此按钮,按
13、此按钮, 狮子开始跑狮子开始跑 类的方法示例 public class AutoLion String color = 黄色黄色; public void run() System.out.println(正在以正在以0.1米米/秒的速度向前奔跑秒的速度向前奔跑); public String bark() String sound = 吼吼 ; return sound; AutoLion类代码实现 方法名称方法名称 方法体方法体 返回类型返回类型 如何定义类的方法 类的方法定义类的某种行为(或功能) 方法的定义方法的定义 方法的名称方法的名称 方法的主体方法的主体 方法返回的数据类型方法返
14、回的数据类型 定义类的方法定义类的方法 public 返回值类型返回值类型 方法名方法名() /这里编写方法的主体这里编写方法的主体 步骤一:定义方步骤一:定义方 法名以及返回值法名以及返回值 步骤二:编写方步骤二:编写方 法体法体 方法的命名 如何给方法起名字? 必须以字母、_或开头 可以包括数字,但不能以它开头 遵循的命名规范 通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母 小写,其后单词首字母大写 方法的返回值 两种情况 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型 为该返回值的类型 如果方法没有返回值,返回类型为void public cla
15、ss Student String name = 张三张三; public void getName() return name; 返回类型要匹配返回类型要匹配 return 表达式;表达式; 编译错误编译错误 常见错误2-1 public class YuntuSchool public static void main(String args) return 云图智联北京中心! ; 返回类型是返回类型是void 方法中不能有返回值方法中不能有返回值 常见错误2-2 public class Student public double getInfo() double weight = 95
16、.5; double height = 1.69; return weight, height; 方法至多可以返回一个值,方法至多可以返回一个值, 不能返回多个值不能返回多个值 方法调用 方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句 对象名对象名.方法名()方法名(); 小明过生日,爸爸送他一个电动狮子玩具,编程小明过生日,爸爸送他一个电动狮子玩具,编程 测试这个狮子能否正常工作测试这个狮子能否正常工作 演示示例演示示例1:演示运行效果:演示运行效果 方法调用 public class AutoLion String color = 黄色黄色; p
17、ublic void run() /方法方法1:跑:跑 System.out.println(正在以正在以0.1米米/秒的速度向前奔跑。秒的速度向前奔跑。); public String bark() /方法方法2:叫:叫 String sound = 吼吼 ; return sound; public String getColor() /方法方法3:获得颜色属性:获得颜色属性 return color; public String showLion() /方法方法4:描述狮子特性:描述狮子特性 return 这是一个这是一个 + getColor() + 的玩具狮子的玩具狮子! ; pub
18、lic class TestLion public static void main(String args) AutoLion lion = new AutoLion(); System.out.println(lion.showLion(); lion.run(); System.out.println(lion.bark(); 在类的方法中调用在类的方法中调用 该类另一个方法该类另一个方法 在在main()方法中方法中 调用类的方法调用类的方法 演示示例演示示例2:设置断点演示方法调用执行过程:设置断点演示方法调用执行过程 方法调用小结 方法之间允许相互调用,不需要知道方法的具体实现,提
19、高了效 率 情况情况举例举例 1、类、类Student 的方法的方法a()调用调用Student类类 的方法的方法b(),直接调用,直接调用 public void a() b(); /调用调用b() 2、类、类Student的方法的方法a()调用类调用类Teacher 的方法的方法b(),先创建类对象,然后使用,先创建类对象,然后使用“.” 调用调用 public void a() Teacher t = new Teacher(); t.b(); /调用调用Teacher类的类的b() 变量作用域3-1 public class AutoLion String color = 黄色黄色;
20、public void run() /方法方法1:跑:跑 System.out.println(正在以正在以0.1米米/秒的速度向前奔跑。秒的速度向前奔跑。); public String bark() /方法方法2:叫:叫 String sound = 吼吼 ; return sound; public String getColor() /方法方法3:获得颜色属性:获得颜色属性 return color ; public String showLion() /方法方法4:输出类的描述信息:输出类的描述信息 return 这是一个这是一个 + getColor() + 的玩具狮子的玩具狮子!
21、叫声是叫声是 + sound ; 可以调用吗?可以调用吗? 演示示例演示示例3 3:变量作用域:变量作用域 变量作用域3-2 变量声明的位置决定变量作用域 变量作用域确定可在程序中按变量名访问该变量的区域 for(int i = 0, a = 0; i 4; i+) a+; System.out.println(a); a的作用域仅在的作用域仅在for 循环中循环中 代码错误代码错误 变量作用域3-3 变量变量1类型类型 变量变量1; 变量变量2类型类型 变量变量2; 变量变量3类型类型 变量变量3; public 返回类型返回类型 方法方法1() 变量变量4类型类型 变量变量4; publi
22、c 返回类型返回类型 方法方法2() 变量变量5类型类型 变量变量5; public class AutoLion AutoLion类的方法类的方法 别的类的方法别的类的方法 谁能使用这些变量?谁能使用这些变量? 方法方法1 方法方法2 成员变量成员变量 局部变量局部变量 局部变量局部变量 方法调用案例 编写成绩计算类(ScoreCalc) 编写测试类 成绩计算类成绩计算类 属性:属性: 3门成绩门成绩 (Java、C#、DB) 方法:方法: 计算平均成绩计算平均成绩 显示平均成绩显示平均成绩 计算总成绩计算总成绩 显示总成绩显示总成绩 演示示例演示示例4:方法调用:方法调用 小结 编写手机类
23、(Phone):它可以下载音乐,可以播放这些音乐,可 以进行充电 编写电池类(Cell):自动续电 编写测试类(Test) 手机类手机类 行为:行为: 播放下载的音乐播放下载的音乐 下载下载 充电充电 电池类电池类 属性:属性: 品牌品牌 行为:行为: 续电续电 演示示例演示示例5:演示效果:演示效果 为什么要用带参数的方法 ScoreCalc类 和 Test类 public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(请输入请输入Java成绩:成绩:); int
24、java = input.nextInt(); /*计算并显示输出计算并显示输出*/ int total = java + c + db; double avg = total / 3; System.out.print(总成绩:总成绩: + total); System.out.print(n平均分平均分: + avg); 一次还可以接受,如果一次还可以接受,如果 还要再执行这个功能,还要再执行这个功能, 难道还要重复再写?难道还要重复再写? calcDiffTime calcTotalScore() ScoreCalc showTotalScore() calcAvg() showAvg(
25、) main() /程序入口程序入口 /计算并输出总成绩计算并输出总成绩 /计算并输出平均分计算并输出平均分 Test 调用调用 调用调用 类的方法实现某个特定的功能,类的方法实现某个特定的功能, 别的类不需要知道它如何实现!别的类不需要知道它如何实现! 知道了实现此功能的类和它的方法名,知道了实现此功能的类和它的方法名, 就可以直接调用了,不用重复写代码!就可以直接调用了,不用重复写代码! 面向对象(面向对象(OOOO)思想)思想 工作原理 新鲜桃汁新鲜桃汁新鲜苹果汁新鲜苹果汁新鲜梨汁新鲜梨汁 输输 出出 三三 种种 果果 汁汁 如何使用带参数的方法3-1 、 定义带参数的方法 调用带参数的
26、方法 public class Zhazhi public String zhazhi ( String fruit ) String juice = fruit + 汁汁; return juice; /*调用调用zhazhi方法方法*/ Zhazhi myZhazhi = new Zhazhi(); String myFruit = 苹果苹果; String myJuice = myZhazhi.zhazhi(myFruit); System.out.println(myJuice); 参数列表:参数列表: (数据类型数据类型 参数参数1,数,数 据类型据类型 参数参数2) 调用方法,传递
27、的参数要调用方法,传递的参数要 与参数列表一一对应与参数列表一一对应 如何使用带参数的方法3-1 如何使用带参数的方法3-2 返回类型返回类型 () /方法的主体方法的主体 该方法允许被访问调用该方法允许被访问调用 的权限范围的权限范围 方法返回值的方法返回值的 类型类型 public class StudentsBiz String names = new String30; public void addName(String name) /增加学生姓名增加学生姓名 public void showNames () /显示全部学生姓名显示全部学生姓名 传送给方法的形参列表传送给方法的形参列
28、表 一个形式参数一个形式参数 没有返回值没有返回值 如何使用带参数的方法3-3 public static void main(String args) StudentsBiz st = new StudentsBiz(); Scanner input = new Scanner(System.in); for(int i=0;i5;i+) System.out.print(请输入学生姓名:请输入学生姓名:); String newName = input.next(); st.addName(newName); st.showNames(); 实参的类型、数量、顺序实参的类型、数量、顺序 都
29、要与形参一一对应都要与形参一一对应 先实例化对象,先实例化对象, 再使用方法再使用方法 调用带参数的方法 对象名对象名.方法名(实参方法名(实参1, 实参实参2,,实参,实参n) 实参列表实参列表 演示示例演示示例1:带一个参数的方法:带一个参数的方法 设计方法,通过传递三个参数(开始位置、结束位置,查找的 姓名)来实现 带多个参数的方法2-1 2、指定查找区间,查找学生姓名并显示 public boolean searchName (int start,int end,String name) boolean find = false; / 是否找到标识是否找到标识 / 指定区间数组中,查找
30、姓名指定区间数组中,查找姓名 for(int i=start;i=end;i+) if(namesi.equals(name) find=true; break; return find; 返回值类型返回值类型带有三个形参带有三个形参 返回结果:返回结果: boolean类型类型 带多个参数的方法2-2 if(st.searchName(s,e,name) System.out.println(找到了!找到了!); else System.out.println(没找到该学生!没找到该学生!); 传递三个实参传递三个实参 演示示例演示示例3:带多个参数的方法:带多个参数的方法 /方法定义方法定
31、义 public void addName(String name) /方法体方法体 /方法调用方法调用 对象名对象名.addName(String 张三张三); 调用方法时不能指定实参类型!调用方法时不能指定实参类型! 常见错误4-1 对象名对象名.addName(张三张三); /方法定义方法定义 public boolean searchName(int start ,int end ,String name) /方法体方法体 /方法调用方法调用 String s=开始开始; int e=3; String name=张三张三; boolean flag=对象名对象名. searchNam
32、e(s ,e ,name); 形参和实参数据类型不一致形参和实参数据类型不一致! 常见错误4-2 /方法定义方法定义 public boolean searchName(int start,int end,String name) /方法体方法体 /方法调用方法调用 int s=1; int e=3; boolean flag= 对象名对象名.searchName(s,e); 形参和实参数量不一致形参和实参数量不一致! 常见错误4-3 /方法定义方法定义 public boolean searchName(int start,int end,String name) /方法体方法体 /方法调用
33、方法调用 int s=1; int e=3; String name=张三张三; 对象名对象名.searchName(s,e,name); 调用方法后没有对返回值作任何处理调用方法后没有对返回值作任何处理! 常见错误4-4 使用Arrays类提供的sort()方法实现 定义一个独立的方法来实现姓名排序,该方法的返回值为数组 类型 数组类型的方法返回值2-1 1、编写方法,实现学生的姓名排序 public class StudentsBiz String names = new String5; / 学生姓名数组学生姓名数组 public void inputNames() /接收用户输入的接收
34、用户输入的5个学生姓名,存放于个学生姓名,存放于names中中 /字符串数组作为返回值字符串数组作为返回值 public String getNames() Arrays.sort(names); return names; 返回字符串数组返回字符串数组 public class TestSort public static void main(String args) StudentsBiz st = new StudentsBiz(); st.inputNames(); String namesbysort =st.getNames(); System.out.println(*排序后排序
35、后*); for(int i =0;i namesbysort.length;i+) if(namesbysort i!=null) System.out.print(namesbysort i+t); 数组类型的方法返回值2-2 调用方法,返回结果调用方法,返回结果 处理返回结果处理返回结果 演示示例演示示例4:数组类型的方法返回值:数组类型的方法返回值 定义学生类,添加属性:三门课的成绩 定义学生成绩计算类,添加方法,传递对象参数 定义测试类 对象类型的参数3-1 2、编写学生成绩计算类,计算学生平均分 public class Students /定义三门课成绩属性定义三门课成绩属性 f
36、loat java=0; float database=0; float html=0; 三门课成绩三门课成绩 public class Score /计算平均分,对象作为参数计算平均分,对象作为参数 public float getAvg(Students stu) float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; 对象类型的参数3-2 返回结果返回结果 对象类型的参数对象类型的参数 public class TestScore public static void main(String args) St
37、udents stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:该学生的平均分为:+avg); 调用方法,传递参数,调用方法,传递参数, 返回结果返回结果 演示示例演示示例5:对象类型的参数:对象类型的参数 对象类型的参数3-3 public class TestScore public static void main(String args) Stud
38、ents stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:该学生的平均分为:+avg); public class Score /计算平均分,对象作为参数计算平均分,对象作为参数 public float getAvg(Students stu) float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; main:stu0 x2a486c 0.0 0.0 0.0 0 main:avg80 95 77 84.0 getAvg:stu0 x2a486c 0 getAvg:avg 84.0 省略内存分配省略内存分配 内存分配图内存分配图 Students类中定义身高属性 Height
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年城市NOA渗透率22%市场规模百万台分析
- 2026年小学实验室安全教育
- 2026年AI幻觉频发错误医疗建议风险防范与验证机制
- 2026年GaN射频模块在6G基站设备中的应用:国博电子布局进展解析
- 投资方案经济效果评价的指标和方法
- 2026年网络安全攻防技术
- 急诊护理与医患沟通
- 急诊科专科护理标准化操作流程
- 泌尿外科护理中的心理支持技巧
- 2025-2026学年浙江省杭州市三墩中学八年级(上)月考数学试卷(1月份)(含答案)
- 2026年及未来5年市场数据中国铍矿石行业市场全景评估及发展前景预测报告
- 2025-2026学年八年级下册语文教学计划及进度表
- 2026年内蒙古公务员录用考试《行测》题(含答案)
- 2026年南京城市职业学院单招职业适应性考试题库及一套完整答案详解
- 2025年河南农业职业学院单招职业技能考试题库附答案解析
- 物流管理标准作业流程手册
- 2025-2030中国脑机接口技术研发进展及市场潜力分析
- 油漆防腐工程施工方案
- 2026年春教科版(新教材)小学科学三年级下册(全册)教学设计(附教材目录P131)
- 财务报销流程培训考试测试卷
- 2025广西河池市从“五方面人员”中选拔乡镇领导班子成员212人备考题库附答案
评论
0/150
提交评论