JAVA第二章理解类的定义.ppt

上传人:wuy****n92 文档编号:70791894 上传时间:2023-01-28 格式:PPT 页数:47 大小:465.50KB
返回 下载 相关 举报
JAVA第二章理解类的定义.ppt_第1页
第1页 / 共47页
JAVA第二章理解类的定义.ppt_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《JAVA第二章理解类的定义.ppt》由会员分享,可在线阅读,更多相关《JAVA第二章理解类的定义.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第2章 理解类的定义赵赵 怡怡公共邮箱:(公共邮箱:(123456)第第2章章 理解类的定义理解类的定义类的定义类的定义1条件语句条件语句2局部变量局部变量3 3public class TicketMachine private int price;.public TicketMachine(int ticketCost)price=ticketCost;.public int getPrice()return price;.类的基本结构类的基本结构类的声明类的声明类体类体字段字段构造器构造器方法方法1.类的声明外围部分2.类体内部部分类体中定义了决定对象特性和行为的字段、构造器和方法,其中

2、:u 字段字段保存每个对象要用的数据;u 构造器构造器让每个对象一旦被创建出来就被正确地初始化;u 方法方法实现了对象的行为。类的基本结构类的基本结构类的基本结构类的基本结构类的一般形式:类的一般形式:public class 类名类名 字段字段 构造器构造器 方法方法练习练习2-1:写出:写出Student类和类和LabClass类的声明部分。类的声明部分。字段字段u字段(字段(field):保存了对象要使用的数据,又称作实例变):保存了对象要使用的数据,又称作实例变量。量。uTicketMachine类有类有3个字段:个字段:price、balance和和total。u字段是对象内的一小块

3、用来保存字段是对象内的一小块用来保存数值的空间。每一个对象被创建后,数值的空间。每一个对象被创建后,就具有在它所属的类中声明过的每就具有在它所属的类中声明过的每一个字段所需的空间。一个字段所需的空间。ticketMachine1:TicketMachinepricebalancetotal字段字段1字段的声明字段的声明private int price;u private指出它们都是对象的私有字段;指出它们都是对象的私有字段;u int是字段的类型,说明它们都可以存储整数值。是字段的类型,说明它们都可以存储整数值。因为字段保存了可能会随着时间变化的值,所因为字段保存了可能会随着时间变化的值,所

4、以又被称作变量。如果需要就可以改变字段中保存以又被称作变量。如果需要就可以改变字段中保存的值。的值。访问权限访问权限数据类型数据类型字段名称字段名称字段字段2注释(注释(comment)注释是插在类的代码中,用来向阅读者提供解注释是插在类的代码中,用来向阅读者提供解释信息的语句。它是非执行语句,不会影响类的功释信息的语句。它是非执行语句,不会影响类的功能。能。u 单行注释:以两个字符单行注释:以两个字符“/”开头;开头;u 多行注释:以多行注释:以“/*”开头,以开头,以“*/”结束;结束;u 文档注释:以文档注释:以“/*”开头,以开头,以“*/”结束。结束。字段字段练习练习2-2:下面每个

5、字段的类型分别是什么?:下面每个字段的类型分别是什么?private int count;private Student representative;private Server host;练习练习2-3:下面字段的名字分别是什么?:下面字段的名字分别是什么?private boolean alive;private Person tutor;private Game game;练习练习2-4:写一个字段的完整声明,字段的名字是:写一个字段的完整声明,字段的名字是status,类型是,类型是int。构造器构造器u 构造器(构造器(constructor)让每个对象一旦创建出来就被)让每个对象

6、一旦创建出来就被正确地初始化。正确地初始化。u 构造器把对象初始化成一个合理的状态。构造器把对象初始化成一个合理的状态。u TicketMachine类的构造器类的构造器public TicketMachine(int ticketCost)price=ticketCost;balance=0;total=0;ticketMachine1:TicketMachinepricebalancetotal50000构造器构造器1类构造器的特点类构造器的特点u 构造器与定义它们的类具有相同的名字;构造器与定义它们的类具有相同的名字;u 创建实例对象时构造器被调用;创建实例对象时构造器被调用;u 构造器

7、无返回值,也没有构造器无返回值,也没有void。构造器构造器2通过参数传递数据通过参数传递数据构造器和方法接收外部值的方式都是使用参数。参数定构造器和方法接收外部值的方式都是使用参数。参数定义在构造器或方法的头部,如:义在构造器或方法的头部,如:public TicketMachine(int ticketCost)构造器空间构造器空间构造器空间可以用来保存构造器参数以及构造器中的其他局部变构造器空间可以用来保存构造器参数以及构造器中的其他局部变量的值。量的值。方法空间方法空间 为了区分构造器或方法的内部的参数名字,以及外部要传入的参数为了区分构造器或方法的内部的参数名字,以及外部要传入的参数

8、的值,把参数的名字叫作形参,把数值叫作实参。的值,把参数的名字叫作形参,把数值叫作实参。ticketMachine1:TicketMachinepricebalancetotal50000TicketMachine(constructor)ticketCost 500(A)(B)构造器构造器练习练习2-5:下面这个构造器属于哪个类?:下面这个构造器属于哪个类?public Student(String name)练习练习2-6:下面的构造器有几个参数,它们的类型:下面的构造器有几个参数,它们的类型分别是什么?分别是什么?public Book(String title,double price

9、)练习练习2-7:你能猜测一下:你能猜测一下Book类的字段可能的名类的字段可能的名字与类型吗?字与类型吗?构造器构造器3赋值赋值构造器中的一条赋值语句:构造器中的一条赋值语句:price=ticketCost;u有赋值运算符有赋值运算符“=”的语句是赋值语句。的语句是赋值语句。u赋值语句把赋值运算符右边的值复制给左边的变量。赋值语句把赋值运算符右边的值复制给左边的变量。赋值运算符的右边通常是表达式。赋值运算符的右边通常是表达式。u表达式的类型必须与要赋值的变量的类型匹配。表达式的类型必须与要赋值的变量的类型匹配。u同样的规则也适用于形参和实参:实参的类型必须与同样的规则也适用于形参和实参:实

10、参的类型必须与形参的类型相匹配形参的类型相匹配。构造器构造器练习练习2-8:假设类:假设类Pet有一个字段叫作有一个字段叫作name,类型,类型是是String。在下面的构造器里写一条赋值语句,。在下面的构造器里写一条赋值语句,使得使得name字段能够以构造器的参数来初始化。字段能够以构造器的参数来初始化。public Pet(String petName)方法方法TicketMachine类有类有4个方法:个方法:getPrice、getBalance、insertMoney和和printTicket。1方法的组成方法的组成方法由两个部分组成:方法头和方法体。方法由两个部分组成:方法头和方法

11、体。语句块(语句块(block):在一对大括号中的所有语句叫做一个):在一对大括号中的所有语句叫做一个语句块。类体和方法体都是语句块。语句块。类体和方法体都是语句块。public int getPrice()return price;方法声明方法声明方法体方法体方法方法2方法的返回值和返回语句方法的返回值和返回语句u方法可以有返回值,返回类型写在方法名的前面,同时在方法可以有返回值,返回类型写在方法名的前面,同时在方法体中还必须有一条返回语句,语句格式如下:方法体中还必须有一条返回语句,语句格式如下:return 表达式表达式;u返回语句用来返回和方法声明中的返回类型相匹配的数据。返回语句用来

12、返回和方法声明中的返回类型相匹配的数据。有返回值的方法,返回语句总是该方法的最后一条语句。有返回值的方法,返回语句总是该方法的最后一条语句。u当方法没有返回值时,应在方法名前加当方法没有返回值时,应在方法名前加void。public int getPrice()访问权限访问权限返回值类型返回值类型方法名方法名参数列表参数列表方法方法uJava允许没有返回值的方法体内有一条没有返回值的返回允许没有返回值的方法体内有一条没有返回值的返回语句。形式为:语句。形式为:return;u该语句会使方法结束,不再执行后面的代码。该语句会使方法结束,不再执行后面的代码。构造器与方法构造器与方法u方法可以有返回

13、值,而构造器没有任何返回值,方法可以有返回值,而构造器没有任何返回值,也不能在方法名前加也不能在方法名前加void。u方法和构造器都可以有任意数量的参数。方法和构造器都可以有任意数量的参数。3访问器方法访问器方法u通常把通常把TicketMachine类的两个类的两个get方法(方法(getPrice和和getBalance)称作访问器方法,或访问器。)称作访问器方法,或访问器。u访问器方法:返回对象状态的信息。即它提供对状态访问器方法:返回对象状态的信息。即它提供对状态的访问。的访问。u访问器通常具有一条返回语句,以返回相关信息。访问器通常具有一条返回语句,以返回相关信息。练习练习2-9:定

14、义访问器方法:定义访问器方法getTotal,返回,返回total字段的值。字段的值。方法方法方法方法4修改器方法修改器方法u修改器方法:改变对象状态的方法。修改器方法:改变对象状态的方法。uinsertMoney方法方法insertMoney方法体内有一条其他形式的赋值语句:方法体内有一条其他形式的赋值语句:balance=balance+amount;该赋值语句也可以写作:该赋值语句也可以写作:balance+=amount;练习练习2-10:完成:完成setPrice的方法体,使它将其参数值赋给的方法体,使它将其参数值赋给price字段。字段。public void setPrice(i

15、nt ticketCost)方法方法练习练习2-11:完成下面方法的方法体,方法的目的是把参:完成下面方法的方法体,方法的目的是把参数的值加给字段数的值加给字段score。/*Increase score by the given number of points.*/public void increase(int points)方法方法练习练习2-12:完成下面的方法,使字段:完成下面的方法,使字段price的值减少给的值减少给定的参数的值?定的参数的值?/*Reduce price by the given amount*/public void discount(int amount)

16、在方法中打印在方法中打印查看查看printTicket方法的源代码。方法的源代码。println方法方法printTicket方法中的所有打印语句都是调用Java语言中System.out对象的println方法。该方法将它的参数在字符终端打印输出。System.out.println(#The BlueJ Line);System.out.println(#+price+cents.);System.out.println();在方法中打印在方法中打印练习练习2-13:在:在TicketMachine类中加一个方法类中加一个方法prompt,这个方法没有参数和返回值,方法的功能应打印出这个方

17、法没有参数和返回值,方法的功能应打印出下面的内容:下面的内容:Please insert the correct amount of money.在方法中打印在方法中打印练习练习2-14:在:在TicketMachine类中加类中加showPrice方法,这方法,这个方法没有参数和返回值,方法的功能是打印出下个方法没有参数和返回值,方法的功能是打印出下面的内容:面的内容:The price of a ticket is xyz cents.其中,其中,xyz是该方法被除数调用时是该方法被除数调用时price字段的值。字段的值。售票机程序设计的探讨售票机程序设计的探讨u没有检查乘客是否投入买一张

18、票足够金额的没有检查乘客是否投入买一张票足够金额的钱币;钱币;u不能为乘客找回多投入的钱;不能为乘客找回多投入的钱;u不检查乘客是否投入合理的金额;不检查乘客是否投入合理的金额;u不检查传递给构造器的价格是否合理。不检查传递给构造器的价格是否合理。1条件语句的格式if(布尔表达式)(布尔表达式)语句块语句块1else 语句块语句块2条件语句条件语句条件语句条件语句2布尔表达式即逻辑表达式,它的运算结果为布尔值true(真)或false(假)。3.关系表达式运算符运算符表达式表达式返回返回true的情况的情况op1op2op1大于大于op2=op1=op2op1大于或等于大于或等于op2op1o

19、p2op1小于小于op2=op1=op2op1小于或等于小于或等于op2=op1=op2op1与与op2相等相等!=op1!=op2op1与与op2不等不等insertMoney方法的代码方法的代码:public void insertMoney(int amount)if(amount 0)balance=balance+amount;else System.out.println(Use a positive amount:+amount);条件语句条件语句改进售票机改进售票机1.0中的中的printTicket方法,在打印车票方法,在打印车票之前先检查乘客是否已经投入了足够的金额。之前先

20、检查乘客是否已经投入了足够的金额。售票机售票机1.0中的中的printTicket方法的源代码方法的源代码printTicket1.txt改进后的售票机改进后的售票机2.0中的中的printTicket方法的源代码方法的源代码 printTicket2.txt条件语句条件语句练习练习2-15:写一条赋值语句,将两个变量:写一条赋值语句,将两个变量price和和discount的乘积保存在第三个变量的乘积保存在第三个变量saving中。中。练习练习2-16:写一条赋值语句,将:写一条赋值语句,将total的值除以的值除以count,结果保存在,结果保存在mean中。中。练习练习2-17:写一条:

21、写一条if 语句,比较语句,比较price和和budget的值。的值。如果如果price大于大于budget,则打印信息,则打印信息“太贵了!太贵了!”;否则打印信息;否则打印信息“正好正好”。练习练习2-18:修改练习:修改练习2-17,当价格太贵时,打印信,当价格太贵时,打印信息中包含息中包含budget的值。的值。Test这里的代码有这里的代码有哪些错误?哪些错误?public class CokeMachine private price;public CokeMachine()price=300 public int getPrice return Price;(there are

22、five errors!)Testpublic class CokeMachine private price;public CokeMachine()price=300 public int getPrice return Price;()intp这里的代码有这里的代码有哪些错误?哪些错误?(there are five errors!)添加添加refundBalance方法方法练习练习2-19:试试下面的:试试下面的refundBalance方法能不能得方法能不能得出正确的结果?出正确的结果?public int refundBalance()balance=0;return balanc

23、e;实现售票机的找零功能public int refundBalance()return balance;balance=0;public int refundBalance()int amountToRefund;amountToRefund=balance;balance=0;return amountToRefund;局部变量局部变量没有访问权没有访问权限修饰词限修饰词局部变量局部变量局部变量局部变量1.局部变量的定义局部变量的定义u局部变量(局部变量(local variable):在方法内部声明和使用):在方法内部声明和使用的变量。的变量。2.局部变量的使用局部变量的使用 u局部变量

24、通常作为方法实现其任务所需的临时存储单局部变量通常作为方法实现其任务所需的临时存储单元。元。u局部变量的声明和字段的声明相似,但是不需要局部变量的声明和字段的声明相似,但是不需要private或或public的修饰。的修饰。u 局部变量使用前必须先进行初始化。u 局部变量的作用域仅限于声明它们的语句所在的方法体内,它们的生命周期就是方法的执行周期,它们存在于方法空间中,在方法被调用的时候创建,方法结束时被销毁。u 构造器中也可以有局部变量。局部变量局部变量方法中的如下两行代码:方法中的如下两行代码:int amountToRefund;amountToRefund=balance;可以写成下面

25、的一句:可以写成下面的一句:int amountToRefund=balance;局部变量局部变量变量的作用域和生命周期变量的作用域和生命周期(1)变量的作用域作用域(scope):变量的作用域定义了变量可以被访问的代码的范围。参数和局部变量的作用域被限制在声明这个参数的构造器或方法体内;字段的作用域在类的定义中,即在表示这个类的代码的任何地方都可以访问。变量的作用域和生命周期变量的作用域和生命周期(2)生命周期生命周期(lifetime):变量的生命周期表明了在变量被清除之前能继续存在多久。参数和局部变量的生命周期限制在对构造器或方法的调用中。一旦调用完成,形参就消失了,它们保存的值也就丢失

26、了。换言之,当构造器或方法结束了运行,整个构造器空间或方法空间连同在这个空间里的参数变量就被删除了。字段的生命周期就是它所属的对象的生命周期。1字段u字段定义在类体中,但是在构造器和方法的外面;u字段用于在对象的生命周期内持久保存数据,它们维持着对象的当前状态。它们的生命周期与所属对象一样长;u字段的作用域是整个类,即在整个类内部都可以访问。因此,在该类的所有的构造器和方法内都可以访问。u字段也可以通过对象名来引用,形式如:对象名.字段。但是字段一旦被定义为private,就不能从定义它们的类的外部访问它们了。字段、参数和局部变量字段、参数和局部变量2形参u形参定义在构造器可方法的头部。u形参

27、接收外部传递进来的值,使用调用构造器或方法时所给的实参的值来初始化。u形参的作用域仅限于定义它们的构造器或方法体内。字段、参数和局部变量字段、参数和局部变量3局部变量u局部变量定义在构造器或方法的内部。u它们只能在定义它们的构造器或方法内部被初始化和使用。u局部变量在第一次被用于表达式计算之前必须被初始化,它们没有默认值。u局部变量的作用域仅限于定义它们的语句块内部。字段、参数和局部变量字段、参数和局部变量练习练习2-33:增加一个新的方法:增加一个新的方法emptyMachine,来模拟清空机,来模拟清空机器里的钱。它们应该返回清空前的器里的钱。它们应该返回清空前的total,并将,并将total设为设为0。练习练习2-34:改写:改写printTicket方法,增加局部变量方法,增加局部变量amountLeftToPay,初始为,初始为price和和balance的差。改写条件的差。改写条件语句中的测试,检查语句中的测试,检查amountLeftToPay的值。如果这个值的值。如果这个值小于或等于小于或等于0,车票被打印出来;否则打印一条错误信息,车票被打印出来;否则打印一条错误信息,并指出还需要投入的金额。并指出还需要投入的金额。小小 结结u类的代码结构类的代码结构u字段字段u构造器构造器u方法方法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁