




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、yanglinbnuitcjava程序设计第7章 对象和类学习目标o 理解对象和类以及它们之间的关系o 掌握如何定义类并创建类的对象o 了解类和对象的uml表示o 理解构造函数的作用o 理解对象引用,掌握如何向方法传递对象引用o 掌握getter、setter方法o 掌握this的含义和使用o 理解实例变量和方法,静态变量、常量和方法o 理解类中变量的作用域o 使用对象作为数组元素面向对象的程序o c语言的面向过程的语言。面向过程的核心:n数据结构n算法n数据加工o java语言是面向对象的语言。面对对象的核心:n封装n继承n多态n对象协作类和对象o 对象(object)表示现实世界中可以明确
2、识别的实体。例如,学生、圆、按钮等。对象具有状态和行为。o 类(class)定义了同一类对象共有的属性和方法。o 类是对象的模板、蓝图。对象是类的实例。状态(变量)行为(方法)姓名:张三学号:0001身高:1.73学习工作娱乐class circle double radius = 1.0; circle() radius = 1.0; circle(double r) radius = r; double findarea() return radius * radius * 3.14159; 示例o 下面是一个圆类:数据字段方法构造函数类和对象的uml表示类的uml表示类名数据字段方法对象
3、的uml表示circle1:circleradius = 2circle2:circleradius = 5对象名:类名数据字段值circle*radius: double*circle ()circle (double newradius)findarea (): double构造函数构造函数o 构造函数(constructor)是一段初始化代码,用于创建对象。o 语法constructordeclaration :modifieropt classname (parameterlist) statementsopto 缺省构造函数n如果类未定义任何类型的构造函数,编译器会自动提供一个不带参
4、数的构造函数。n如果已存在带参数的构造函数,则不会提供不带参数的构造函数。创建对象o 使用new操作符创建对象。语法:new classname(actualparameterlistopt);例如:new circle(); /调用无参构造函数new circle(5); /调用带有一个参数的构造函数o java虚拟机为新创建的对象分配内存,并返回对象的引用。n实例变量被赋予默认初值n实例变量显式初始化n返回对象引用引用变量o 对象通过引用变量(reference variable)进行访问,引用变量中存储的是对象的引用(reference)。o 声明引用变量classname object
5、refvar;例如:circle mycircle;o 引用变量赋值objectrefvar = new classname();例如:mycircle = new circle();在一条语句中声明变量和创建对象o 合并为一句classname objectreference = new classname();例如:circle mycirclenew circle();=1.声明一个引用变量,变量类型为circle,变量名为mycircle2.创建对象,返回对象的引用3.将对象的引用赋值给变量mycircle访问对象的实例变量和实例方法o 访问对象的实例变量objectrefvar.da
6、ta例如:mycircle.radius访问对象的radius数据字段 o 调用对象的实例方法objectrefvar.method(arguments) 例如:mycircle.findarea()调用对象的findarea方法例 声明类并创建对象o 编写程序,定义circle类,创建circle对象。n创建一个半径为5的圆。n创建一个半径为1的圆。n显示两个圆的半径和面积。n将第二个圆的半径改为100,显示其半径和面积。example:v1/testcircle.java, v1/circle.java基本类型变量和引用类型变量的区别o 变量表示存储数据的内存单元。n基本类型变量存储的是基
7、本类型的值。n引用类型变量存储的是对象的引用。当变量未引用任何对象时,它是值为null。1基本类型 int i = 1;inull引用类型 circle c;c对象的引用circle c = new circle();circle1:circleradius = 2c赋值的区别o 当进行变量赋值时n基本类型变量赋值时,变量的实际值赋值给另一个变量。n引用类型变量赋值时,对象的引用赋值给另一个变量。c1 = c2;对象的引用circle1:circleradius = 2c1对象的引用c2circle2:circleradius = 52i2ji = j;赋值后不再被引用的对象,将被运行时系统自
8、动回收1基本类型i2j赋值前int i = 1;int j = 2;对象的引用引用类型circle1:circleradius = 2c1对象的引用c2circle2:circleradius = 5int c1 = new circle();int c2 = new circle();例 使用java类库中的类o 使用javax.swing程序包中的jframe类创建两个窗体。设置窗体的标题、大小和位置,并显示。example:testframe.java类成员访问控制符o 类中代码可以访问自身的所有成员。o 其它类中的代码访问成员,受访问控制符的限制:nprivate 只能当前类自身可以访
9、问。npackage 无访问修饰符的成员,只有相同包中的代码可以访问。nprotected 子类、同一包中的类可以访问。npublic 所有其它类都可以访问。o 访问控制是在类的层次上进行的,而不是在每个对象上。getter和setter方法o 通常为私有(private)成员变量提供getter和setter方法。o 如果成员变量为datetype propertynamengetter方法用于获取成员变量的值签名: public datetype getpropertyname()nsetter方法用于设置成员变量的值签名: public void setpropertyname(date
10、type value)example:v2/testcircle.java, v2/circle.java将对象传递给方法o 与传递数组一样,传递对象实际是传递对象的引用。n基本数据类型传递的是实际值的拷贝,修改形参,不影响实参。n引用类型变量传递的是对象的引用,通过形参修改对象,将改变实参引用的对象。实参 : 1形参 : 1copy基本类型实参 : ref形参 : refcopyobject引用类型example:v2/testpassobject.java实例变量与静态变量o 实例变量(instance variable)未用static修饰的成员变量,属于类的具体实例(对象),只能通过引
11、用变量访问。o 静态变量(static variable)是用static修饰的变量,在一个类的所有实例间共享,也称类变量。静态变量可以通过类名访问。152circle1:circleradiusnumberofobject = 1 = 2circle2:circleradiusnumberofobject = 5 = 2radiusradiusnumberofobject- 表示private+ 表示public下划线 表示staticcircle-radiusnumberofobject: double: int+getradius ()setradius (double radius)g
12、etnumberofobject ()findarea() (): double: void: int: double静态常量o 静态常量是用static final修饰的变量。例如,math类中的常量pi定义为:public static final double pi = 3.14159265358979323846;静态方法o 静态方法(static method)是用static修饰的方法。 例如:nmainnjoptionpane.showmessagedialognjoptionpane.showinputdialognmath.randomo 静态方法可以通过类名调用。o 静态方
13、法只能访问类的静态成员,不能访问类中的实例成员。例 使用实例、静态的变量和方法o 为v2.circle添加一个静态变量,保存创建circle对象的数量。n在main方法中创建circle1和circle2两个对象。n修改实例和静态变量,并查看修改的结果。circle-radiusnumberofobject: double: int+getradius ()setradius (double radius)getnumberofobject ()findarea() (): double: void: int: doubleexample:v3/testcircle.java, v3/circ
14、le.java变量的作用域o 成员变量(实例变量和静态变量)的作用域是整个类,与声明的位置无关。o 如果一个变量的初始化依赖于另一个变量,则另一个变量必须在前面声明例如:public class foo int i;int j = i + 1;o 如果一个局部变量具有与类中的变量相同的名称,那么局部变量优先,成员变量被隐藏。example:testscope.javathis关键字o this表示当前对象n在实例方法中,实例变量被局部变量或方法参数隐藏,可以通过this.instancevariable访问实例变量。o 调用当前类的其它构造函数。nthis(actualparameterlis
15、topt)n必须是构造函数的第1条语句。example:v4/testcircle.java, v4/circle.java对象数组o 与基本数据类型一样,可以声明并创建对象数组。o 当创建对象数组时,数组元素的缺省初值为null。circle circlearray = new circle10;for(int i = 0; i circlearray.length; i+) circlearrayi = new circle();circlearray0circlearray1circlearray9数组的引用circlearraycircle对象0circle对象1circle对象9例
16、汇总圆的面积o 编写程序,将一个circle数组的面积相加。n程序创建由10个circle对象组成的数组n然后以随机数初始化圆的半径n显示数组中所有圆的总面积example:v4/totalarea.java例 使用loan类o 编写程序,实现一个下面的类并测试。loan-annualinterestratenumberofyearsloanamountloandate: double: int: double: date+loan ()loan (double rate, int years, int amount)getannualinterestrate ()getnumberofyea
17、rs ()getloanamount ()getloandate ()setannualinterestrate (double annualinterestrate)setnumberofyears (int numberofyears)setloanamount (double loanamount)monthlypayment ()totalpayment (): double: int: double: date: void: void: void: double: double年利率,缺省值为2.5贷款年数,缺省值为1贷款金额,缺省值为1000贷款日期构建缺省的loan对象使用给定的值,构建loan对象获取年利率获取贷款年数获取贷款金额获取贷款日期设置年利率设置贷款年数设置贷款金额设置贷款日期计算月还款额计算年还款额example:loan.java, testloanclass.j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025员工试用期劳动合同范本AA
- 户外摆件租赁合同范本
- 房顶漏水装修合同范本
- 种植用工合同范本
- 酒店的购销合同范本
- 厂家授权合作合同范本
- 2025合同范本汇编大全
- 快递店员工合同范本
- 拍车定金合同范本
- 2025关于石油购销的合同范本
- 2025年地址标签纸项目市场调查研究报告
- 智能计算系统概述
- 谷子介绍课件
- 医工结合的复合型人才培养探索
- 医德医风及行业作风建设培训
- 中国老年患者术后谵妄防治专家共识
- DB14T 1596-2024玉米间作花生机械化栽培技术规程
- 选矿概论-6 浮选
- 温通刮痧技术操作流程图及考核标准
- 教师如何使用AI开展教学DeepSeek使用指南人工智能 课件
- 《企业竞争情报》课件
评论
0/150
提交评论