




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简介本课件由网新(天津)软件有限公司(以下简称:网新天津)编制,仅供网新仿真实训的学员学习使用;网新天津享有本课件中的文字叙述、文档格式、插图、照片等所有信息资料的版权,受知识产权法及版权法等法律、法规的保护。任何个人或组织未经网新集团的书面授权许可,均不得以任何形式使用本课件的任何内容,否则将视为不法侵害,网新天津保留追究侵权人相关法律责任的权利 版权声明上节课回顾流程控制顺序结构分支结构循环结构循环控制数组声明、赋值和初始化数组的遍历数组的应用类的定义对象的定义和使用(重点)方法的定义和使用(重点)构造函数(重点)this关键字方法参数传递(难点)包访问修饰符本课目标类的定义public
2、class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性n; /定义方法部分 方法1; 方法2; 方法m;类的定义 定义一个类的步骤1、定义类名2、编写类的属性3、编写类的方法类的定义public class College /定义属性 String name; / 学校全称 String address; /学校地址 int teacherNum; /教职员工的数目 / 定义方法 public String toString() return name + “ 位于 ”+ address + “目前共有教职员工数:“ + teacherNum +
3、“个; 如何创建和使用对象 使用对象的步骤: 使用new创建类的一个对象 使用对象:使用“.”进行以下操作 给类的属性赋值:对象名.属性 调用类的方法:对象名.方法名()College college1= new College(); = “浙江大学浙江大学; /给属性赋值给属性赋值college1.toString(); /调用类的方法,该方法中的操作将被执行调用类的方法,该方法中的操作将被执行public class InitialCollege public static void main(String args) College college1= new
4、College(); System.out.println(college1); = “浙江大学; college1.address = “浙江杭州西溪路”; college1.teacherNum = 10000; System.out.println(college1); 创建和使用对象示例创建“浙江大学”对象演示示例:创建和使用对象说一说看到什么效果? 调用类的toString()方法是特例:这里使用college1.toString()和ccollege1作用相同更简便综合案例 编写学生类,输出学生相关信息 编写教师类,输出教师相关信息演示示例:创建和使用类
5、和对象方法的定义 方法就是类所具有的行为和功能访问修饰符 其他修饰符 返回类型|void 方法名(参数列表) /编写方法体1)无返回类型无参数2)无返回类型有参数3)有返回类型无参数4)有返回类型有参数方法的命名 如何给方法起名字? 必须以字母、_或开头 可以包括数字,但不能以它开头 遵循的命名规范 通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写,其后单词首字母大写方法的返回值两种情况 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型 如果方法没有返回值,返回类型为voidreturn 表达式;表达式;public class Stu
6、dent String name = 张三; public void getName() return name; 返回类型要匹配编译错误方法调用 方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句 对象名.方法名();小结 编写一个音乐类,添加歌名,类别,歌手,时长属性,添加播放,暂停/继续播放,停止等方法,并编写测试类显示音乐信息 编写一个手机类,添加手机型号,颜色,品牌属性,添加打电话,发短信,拍照方法,并编写测试类显示手机信息课间休息为什么需要包 生活案例 文档分门别类,易于查找 不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突 易
7、于管理 为什么需要包 树形文件系统 使用目录解决文件同名冲突问题 如何存放两个同名的类而不冲突?Sort.java 插入排序 Sort.java 冒泡排序 包 包解决类的同名问题允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件 防止命名冲突 更好的保护类、数据和方法 A.java包如何创建包package chapter5.code ;public class Test public String toString() 包名 使用package声明包,以分号结尾如果有包的声明,一定作为Java源代码的第一条语句 包命名规范 包名由小写字母组成,不能以圆点开头或结尾 自己设定的包名之
8、前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 自己设定的包名部分依不同机构各自内部的规范不同而不同package mypackage;package net.javagroup.mypackage;package ject; 部门名 项目名 package .mypackage; 用MyEclipse 创建包使用MyEclipse创建包的两种方法:分别创建包和类:创建项目创建包创建类创建类的过程中创建类所在的包创建项目创建类(在此过程中声明所属包,如无声明,则显示“缺省包”) 演示示例:使用MyEclipse创建包和类 包与目录的关系
9、 创建好的包和Java源文件是如何存储的? 创建包com.qiuxueke.chapter7,即创建了目录结构:.comqiuxuekechapter7srccomqiuxuekechapter7Test1.javaTest2.java 演示示例:在包资源管理器和导航器中观察包中的目录结构 如何导入包 为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类import java.util.*; /导入java.util包中所有类import java.io.*; /导入java.io包中所有类 关键字import并不陌生 import 包名. 类名;1、系统包(eg:j
10、ava.lang)2、自定义包:com.qiuxueke*: 指包中的所有类Test:指包中的Test类 25什么是封装public class Teacher private String name; / 老师姓名/ 返回教员姓名public String getName() return name;/ 设定老师姓名public void setName(String name) = name;封装,就是隐藏实现细节 将属性私有化,提供公有方法访问私有属性 通过这些公有方法访问私有属性 Teacher teacher = new Teacher();teacher.set
11、Name (李芳);String tName = teacher.getName();通过setter、getter方法访问name属性this代表当前类的实例26实现封装封装的实现:1、修改属性的可见性来限制对属性的访问2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问public class Teacher private String name; / 教员姓名private int age; /年龄public int getAge() return age;public void setAge(int age) this.age = age
12、; /此处省略对name属性的setter、getter方法12访问修饰符28什么是构造方法 构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值 构造方法必须满足以下语法规则:1、方法名与类名相同2、没有返回类型public class Teacher private String name; / 姓名/ 构造方法public Teacher() name = “张三;public class TeacherTest public static void main(String args) Teacher teacher = new Teacher(); 使用new关键字调用构造方法
13、带参数的构造方法 通过带参数的构造方法,显式地为实例变量赋予初始值 public class Teacherprivate String name; / 姓名private int age; / 年龄private String education; / 学历private String position; / 职位/ 带参数的构造方法public Teacher(String name,int age,String education,String position) = name;this.age = age; cation = education;th
14、is.position = position;public String introduction() return 大家好!我是 + name + ,我今年 + age + 岁,学历 + education + ,目前职位是+position;30带参数的构造方法 通过调用带参数的构造方法,简化对象初始化的代码public class TeacherTest public static void main(String args) Teacher teacher = new Teacher(李芳, 23, “本科”, “销售助理);System.out.println(
15、roduction();创建对象时,一并完成了对象成员的初始化工作大家好!我是李芳,我今年23岁,学历本科,目前职位是销售助理构造函数注意事项构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。(5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。32小结 编写一个类
16、Book2,代表教材:具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200具有方法: detail,用来在控制台输出每本教材的名称和页数。具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确课间休息生活中的方法重载类方法方法参数方法实现司机 轿车 巴士 火车 驾驶启动、行驶、等待乘客上车、启动、行驶、到站停车、正点发车、行驶、到站停车、如果用代码实现,我们需要三个方法,这些方法的
17、方法名称相同,参数类型不同 方法重载 方法重载并不陌生 java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式public class Test public static void main(String args) int i = 0;char c = z;String str = hello;System.out.println(i);System.out.println(c);System.out.println(str);PrintStreamprintln(int)println(char)println(String)方
18、法名相同,参数类型不同调用不同的println方法方法重载方法重载 1、在同一类中,两个或两个以上的方法 2、他们的方法名称相同,方法参数个数、参数类型、参数顺序不同 例外: 访问修饰符不足以区分 方法重载 返回类型不足以区分 方法重载方法重载 java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式 运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法Mathmax(int a,int b)max(float a,float b)max(long a,long b)max(double a,double b)public class
19、 Test public static void main(String args) Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);方法重载方法重载38构造方法重载 构造方法重载是方法重载的典型示例public class Teacher private String name; / 姓名private String college= “浙江大学”; / 所在大学public Teacher(String name) = name; /设定姓名public Teacher(String name, String ccoll
20、ege) = name; /设定姓名this.school = school; /设定所在大学public String introduction() return “大家好!我是来自 + school + 的 + name ;构造方法重载39构造方法重载通过调用不同的构造方法来表达对象的多种初始化行为例如: 默认情况下,老师来自浙江大学,初始化时,只需提供老师姓名 有时,需要提供所在大学名称及老师姓名public class TeacherTest public static void main(String args) Teacher teacher1 = new Te
21、acher(李芳);System.out.println(roduction();Teacher teacher2 = new Teacher(“张欣”, “北京大学);System.out.println(roduction();大家好!我是来自浙江大学的李芳大家好!我是来自北京大学的张欣40小结编写一个类Book3,代表教材:具有属性:名称(title)、页数(pageNum)、种类(type)具有方法:detail,用来在控制台输出每本教材的名称、页数、种类具有两个带参构造方法:第一个构造方法中,设置教材种类为“计算机”(固定),其余属性的
22、值由参数给定;第二个构造方法中,所有属性的值都由参数给定编写测试类Book3Test进行测试:分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确场合一:在一个方法内,当局部变量和类的成员变量同名,或者局部变量和父类的成员变量同名时,按照变量的作用域规则,只有局部变量在方法内可见。private String name;public void setName(String name) = name;场合二:在一个类中,有多个构造函数,相互之间调用时。class A A(int a) A() this(10); this 关键字
23、方法参数传递当调用某个方法时,实参会取代形参,当实参为基本数据类型时,那么会发生什么情况;当实参为引用数据类型时,又会发生什么情况。public class Test1 public static void main(String args) int n = 3; System.out.println(Before change, n = + n); changeData(n); System.out.println(After changeData(n), n = + n); public static void changeData(int n) n = 10; Before change
24、, n = 3After changeData(n), n = 3基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的方法参数传递对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。public class Test2 public static void main(String args) StringBuffer sb = new StringBuffer(Hello ); System.out.print
25、ln(Before change, sb = + sb); changeData(sb); System.out.println(After changeData(n), sb = + sb); public static void changeData(StringBuffer strBuf) strBuf.append(World!); Before change, sb = HelloAfter changeData(n), sb = Hello World!方法参数传递public class Test3 public static void main(String args) Str
26、ingBuffer sb = new StringBuffer(Hello ); System.out.println(Before change, sb = + sb); changeData(sb); System.out.println(After changeData(n), sb = + sb); public static void changeData(StringBuffer strBuf) strBuf = new StringBuffer(Hi ); strBuf.append(World!); Before change, sb = HelloAfter changeDa
27、ta(n), sb = Hello小结 public class Tester public static void main(String args) int primitive = 2; changePrimitive(primitive); MyClass myClass = new MyClass(); changeObject(myClass); System.out.println(primitive); System.out.println(myClass.i); public static void changePrimitive(int primitive) primitive = 3; public static void changeObject(MyClass myClass) myClass.i = 3; myClass = new MyClass(); class MyClass int i; Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。可变参数的特点:(1)只能出现在参数列表的最后; (2).位于变量类型和变量名之间,前后有无空格都可以;(3)调用可变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学北师大版三年级上册3 过河教学设计
- 傣族舞蹈文化特征
- 病案管理岗前培训
- 人教版小学二年级上册数学 第5单元 第2课时 观察物体(2) 教案
- 跨国药品销售代理合同
- 2025年中国精算师年关注:投资连结保险合同形成的资产
- 2025年农村房产交易合同
- 供水管网延伸工程施工合同
- 私营企业劳动合同书格式
- 简易个人股权转让合同模板
- 大车司机劳务协议书
- 中医把脉入门培训课件
- 学生军训教官合同协议
- 期刊编辑的学术期刊内容审核标准考核试卷
- 知识产权监管培训课件
- 北斗卫星导航理论与应用课件(完整版)
- 虾苗购销合同模板
- 信号基础信号—联锁系统
- 2020最新八年级下册《道德与法治》知识点总结(最全版)
- 数学教师实习日记16篇
- 家装施工验收手册(共13页)
评论
0/150
提交评论