欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    【教学课件】第4章类和对象.ppt

    • 资源ID:69866715       资源大小:232KB        全文页数:63页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【教学课件】第4章类和对象.ppt

    v学习导读学习导读v本本章章着着重重介介绍绍Java编编程程中中类类和和对对象象等等非非常常重重要要的的概念。概念。vJava程程序序是是由由一一个个个个类类定定义义组组成成的的,编编写写Java程程序序的的过过程程就就是是从从现现实实世世界界中中抽抽象象出出Java可可实实现现的的类类并并用用合合适适的的语语句句定定义义它它们们的的过过程程,这这个个定定义义过过程程包包括括对对类类内内各各种种属属性性和和方方法法的的定定义义,创创建建类类的的对对象象,也包括类间的各种关系和接口的定义。也包括类间的各种关系和接口的定义。v方方法法是是类类的的主主要要组组成成部部分分。在在一一个个类类中中,程程序序的的作作用用体体现现在在方方法法中中。方方法法是是Java语语言言的的基基本本构构件件。利利用用方方法法可可以以组组成成结结构构良良好好的的程程序序。本本章章介介绍绍方方法法的构成规则和设计、使用方法的基本要点。的构成规则和设计、使用方法的基本要点。vJava的应用程序接口(的应用程序接口(API)大量的软件包库。大量的软件包库。第4章类和对象第4章类和对象v4.1.面向对象的基本概念面向对象的基本概念v4.2类类v4.3方法方法v4.4访问控制符访问控制符v4.5静态修饰符、静态字段和方法静态修饰符、静态字段和方法v4.6抽象类与抽象方法抽象类与抽象方法v4.7最终类、最终属性、最终方法与终结器最终类、最终属性、最终方法与终结器v本章小结本章小结v思考与练习思考与练习4.1.面向对象的基本概念学习要点之二学习要点之二OOD方法提供了抽象数据类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化;双重模块化数据对数据的操作信息处理+封装4.1.面向对象的基本概念v4.1.1抽象v1什么是抽象抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象是常用的两种主要抽象手段。v2如何用面向对象的方法实现抽象如何用面向对象的方法实现抽象一个抽象数据类型(AbstractDataType,ADT)可以分解成4个部分,如图4-2所示。语法和语义构成抽象数据类型ADT的说明,让使用者了解这个抽象数据类型的特征。属性和方法构成ADT的实现,展示这个ADT是怎样做成的。图4-2抽象数据类型v4.1.2封装封装 将信息隐蔽的过程称为封装。有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。v4.1.3对象对象 可将对象想象对象(可将对象想象对象(objectobject)应是应是实际问题域中有意义的个体或概念实体。实际问题域中有意义的个体或概念实体。此外,对象应该具有记忆自身状态的能此外,对象应该具有记忆自身状态的能力。同时对象应该以某种方式与系统发力。同时对象应该以某种方式与系统发生关联,既对象应该与系统中其他有意生关联,既对象应该与系统中其他有意义的对象进行消息传递,并提供外部服义的对象进行消息传递,并提供外部服务。务。v4.1.3对象对象l(1)(1)所有东西都是对象。可将对象想象成一种新型变所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。量;它保存着数据,但可要求它对自身进行操作。l(2)(2)程序是一大堆对象的组合;通过消息传递,各对程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。象知道自己该做些什么。l(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。l(4)(4)每个对象都有一种类型。根据语法,每个对象都每个对象都有一种类型。根据语法,每个对象都是某个是某个“类类”的一个的一个“实例实例”。其中,。其中,“类类”(ClassClass)是是“类型类型”(TypeType)的同义词。一个类最重要的特征就的同义词。一个类最重要的特征就是是“能将什么消息发给它?能将什么消息发给它?”l(5 5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。4.2类类类是是现现实实世世界界某某些些对对象象的的共共同同特特征征(属属性性和和操操作作)的的表示,对象是类的实例表示,对象是类的实例。4.2类类的基本定义方法如下:修饰符修饰符class类名类名extends父类父类implements接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明类的修饰符用来说明类的特殊性质。分为三种:访问控制符:public公共类公共类抽象类说明符:abstract最终类说明符:final接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制,我们将在后面详细介绍它的使用方法。v1关于类头关于类头-classclass关键字,在它的后面,应跟随新数据类型的名称。(注意不要把class写成Class)。父类名跟在extends关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。v1关于类头关于类头-类的修饰符类的修饰符“public”(公共)公共)意味着后续的定义任何人均可使用。“private”(私有)私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。“protected”(受保护的)受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)友好的)若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问”)。“v1关于类头关于类头-接口名接口名接口名跟在接口名跟在implements关键字后面,用来关键字后面,用来说明当前类中实现了哪个接口定义的功能说明当前类中实现了哪个接口定义的功能和方法。接口是和方法。接口是Java语言用来实现多重继语言用来实现多重继承的一种特殊机制,我们将在后面详细介承的一种特殊机制,我们将在后面详细介绍它的使用方法。绍它的使用方法。2关于类体关于类体类类体体的的定定义义要要包包括括类类的的具具体体内内容容,包包括括类的属性与方法。类的属性与方法。classJava中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符变量类型变量类型变量名变量名=变量初值变量初值;变量类型和变量名是声明一个变量必变量类型和变量名是声明一个变量必不可少的部分;变量的类型是简单数据类型,不可少的部分;变量的类型是简单数据类型,如如int、double等。等。2关于类体关于类体-类的属性类的属性2关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数参数列表列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,又称类的方法,又称为成员函数,用为成员函数,用来规定类属性上来规定类属性上的操作,实现类的操作,实现类的内部功能的机的内部功能的机制,同时也是类制,同时也是类与外界进行交互与外界进行交互的重要窗口。的重要窗口。类中定义的方法通常起到两种作用:一是围绕着类的类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。消息传递等操作。注意:系统调用方法的最大特点:注意:系统调用方法的最大特点:不需要在程序里书写专门的调用不需要在程序里书写专门的调用方法的命令方法的命令Java语言中定义的方法有两类:语言中定义的方法有两类:一类是需要程序书写专门的调用命令来调用的方法,一类是需要程序书写专门的调用命令来调用的方法,称为程序调用方法,例如称为程序调用方法,例如isPfime();另一类是运行过程中系统自动调用的方法,称为系统方另一类是运行过程中系统自动调用的方法,称为系统方法,例如我们前面程序中的法,例如我们前面程序中的action()、paint()、init()等。这等。这两类方法的定义和使用原则有很大差异。两类方法的定义和使用原则有很大差异。2关于类体关于类体-类的方法类的方法4.2.2用户程序自定义类用户程序自定义类Java程序员把注意力放在创建称为类的用户程序员把注意力放在创建称为类的用户自定义类型(自定义类型(user-definedtype)上,类也称上,类也称为程序员定义的类型(为程序员定义的类型(programmer-definedtype),),每个类都含有数据和一组操作数据的每个类都含有数据和一组操作数据的方法,类中的数据部分称为实例变量。用户定方法,类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。义类型(即类)的实例称为对象。下面是一个简单化的下面是一个简单化的EmployeeEmployee类,在编写今后的职工工资类,在编写今后的职工工资系统时,会用到它。系统时,会用到它。classEmployee/构造函数构造函数publicEmployee(Stringn,doubles,intyear,intmonth,intday)name=n;/职工姓名职工姓名salary=s;/职工工资职工工资hireDay=newGregorianCalendar(year,month-1,day);/出勤数出勤数/方法方法1publicStringgetName()returnname;/更多的方法更多的方法/属性的实例属性的实例privateStringname;privatedoublesalary;privateDatehireDay;4.2.3创建类及类的实例对象创建类及类的实例对象 对对象象是是类类的的一一个个实实例例,类类是是同同种种对对象象的的抽抽象象,是是创创建建对对象象的的模模板板。在在程程序序中中创创建建个个对对象象将将在在内内存中开辟一块空间,其中包括该对象的属性和方法。存中开辟一块空间,其中包括该对象的属性和方法。我我们们将将分分步步讲讲述述这这个个类类的的实实现现细细节节。创创建建对对象象使使用用关关键键字字运运算算符符newnew,例例如如下下面面的的语语句句将将创创建建EmployeeEmployee的对象:的对象:【例【例4.14.1】显示三个员工的相关信息】显示三个员工的相关信息4.2.3创建类及类的实例对象创建类及类的实例对象在在程程序序中中我我们们构构造造了了一一个个EmployeeEmployee数数组组,并并给给它它赋赋给给三三个个EmployeeEmployee对对象象。关于数组我们将在下一章讲述。关于数组我们将在下一章讲述。staff0=staff0=newnew Employee(Employee(张三张三,75000,1987,12,15);,75000,1987,12,15);staff1=staff1=new new Employee(Employee(李四李四,50000,1989,10,1);,50000,1989,10,1);staff2=staff2=newnew Employee(Employee(王五王五,40000,1990,3,15);,40000,1990,3,15);创建对象以某个类为模板,这个类里定义了哪创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有些属性和方法,新建的对象就必然在内存里拥有相应的属性和方法。相应的属性和方法。可见,相对于简单数据类型,类就是用户自己可见,相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型:而相对于简单变量,定义的复杂的抽象数据类型:而相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复对象就是复杂的既包括数据又包括方法代码的复杂数据单位。杂数据单位。4.2.4构造函数构造函数v1构造函数的一般概念构造函数的一般概念v2创建自己的构造函数创建自己的构造函数v3构造函数的作用构造函数的作用4.2.4构造函数构造函数-构造函数的一般概念构造函数的一般概念 要要使使用用对对象象,首首先先必必须须构构造造它它们们,并并指指定定它它们们的的初初始始状状态态,然后将方法应用于对象。然后将方法应用于对象。在在Java程程序序设设计计语语言言中中,使使用用构构造造函函数数(constructor)来来构构造造新新的的实实例例。一一个个构构造造函函数数是是一一个个新新的的方方法法,它它的的作作用用是是构构造造并初始化对象。并初始化对象。构构造造函函数数是是类类的的一一种种特特殊殊方方法法,它它的的特特殊殊性性主主要要体体现现在在如如下下的的几个方面:几个方面:(1)构造函数的方法名与类名相同。)构造函数的方法名与类名相同。(2)构造函数没有返回类型。)构造函数没有返回类型。(3)构造函数的主要作用是完成对类对象的初始化工作。)构造函数的主要作用是完成对类对象的初始化工作。(4)构造函数不能由编程人员显式地直接调用。)构造函数不能由编程人员显式地直接调用。(5)在在创创建建一一个个类类的的新新对对象象的的同同时时,系系统统会会自自动动调调用用该该类类的的构造函数为新对象初始化。构造函数为新对象初始化。4.2.4构造函数构造函数-创建自己的构造函数创建自己的构造函数 构构造造函函数数的的名名字字和和类类的的名名字字是是相相同同的的。当当构构造造Employee类类的的对对象象时时,此此构构造造函函数数被被启启动动,实实例例字字段段赋赋初初值值,在在Java中,定义和初始化是统一的中,定义和初始化是统一的两者缺一不可。两者缺一不可。例如,用下面的代码创建例如,用下面的代码创建Employee类的一个实例时,类的一个实例时,newEmployee(“JamesBond”,100000,1950,1,1);构造函数的特点有:构造函数的特点有:(1 1)构造函数和类具有相同的名字。)构造函数和类具有相同的名字。(2 2)一个类可以有多个构造函数。)一个类可以有多个构造函数。(3 3)构造函数可以有)构造函数可以有0 0个、个、1 1个或多个参数。个或多个参数。(4 4)构造函数没有返回值。)构造函数没有返回值。(5 5)构造函数总是和)构造函数总是和newnew运算符一起被调用。运算符一起被调用。4.2.4构造函数构造函数-构造函数的作用构造函数的作用(1)对象初始化)对象初始化(2 2)引入更多的灵活度(变量赋值或更复杂的操作)引入更多的灵活度(变量赋值或更复杂的操作)(3)Java中可以不定义构造函数中可以不定义构造函数Java中中可可以以不不定定义义构构造造函函数数,此此时时系系统统会会自自动动为为 该该系系统统生生成成一一个个默默认认的的构构造造函函数数。这这个个构构造造函函数数的的名名字字与与类类名相同,它没有任何形式参数,也不完成任何操作。名相同,它没有任何形式参数,也不完成任何操作。为为了了避避免免失失去去控控制制,一一般般将将构构造造函函数数的的声声明明与与创创建建分分开开处理。处理。4.3.1方法概述方法概述4.3方法Java程程序序是是由由一一个个个个类类定定义义组组成成的的,类类有有两两个个部部分分:属属性性和和方方法法。属属性性描描述述类类是是什什么么,方方法法描描述述类类做做什什么么。任任何何对对象象都都有有独独立立的的内内存存存存储储它它的的属属性性。类类的的所所有有的的对对象象共共享存贮在内存的方法。享存贮在内存的方法。换言之:方法是类的主要组成部分。在一个类中,程换言之:方法是类的主要组成部分。在一个类中,程序的作用体现在方法中。序的作用体现在方法中。方法即是方法即是JAVA创建一个有名字的子程序。一个主方法创建一个有名字的子程序。一个主方法和若干个子方法构成。主方法调用其他方法,其他方法间和若干个子方法构成。主方法调用其他方法,其他方法间也可互相调用,同一个方法可被一个或多个方法调用任意也可互相调用,同一个方法可被一个或多个方法调用任意次。次。4.3.1方法概述方法概述Java程序的基本结构如下:程序的基本结构如下:引入引入Java类库;类库;定义用户类定义用户类1定义类定义类1的若干变量或对象:的若干变量或对象:定义类定义类1的方法的方法1;定义类定义类1的方法的方法2;定义类定义类1的方法的方法M1;定义用户类定义用户类2定义类定义类2的若干变量或对象:的若干变量或对象:定义类定义类2的方法的方法1;定义类定义类2的方法的方法2;定义类定义类2的方法的方法M24.3.1方法概述方法概述Java语语言言的的方方法法实实现现子子任任务务处处理理时时,有有下下面面几几个原则与规律:个原则与规律:(1)算算法法中中需需要要细细化化的的步步骤骤、程程序序中中重重复复的的代代码码以及重载父类方法都可以定义成类的方法。以及重载父类方法都可以定义成类的方法。(2)界面清晰。)界面清晰。(3)大小适中。)大小适中。(4)方方法法有有两两种种:一一种种是是标标准准方方法法,JavaAPI提提供供了了丰丰富富的的类类和和方方法法,这这些些方方法法提提供供了了程程序序员员所所需需的的许许多多功功能能。另另一一种种是是用用户户自自定定义义的的方方法法,以以解解决决用户专门需要。用户专门需要。(5)Java应应用用程程序序中中,程程序序的的执执行行从从main类类开开始始,调调用用其其他他方方法法后后又又回回到到main类类,在在main类类中中结结束束整整个程序的运行。个程序的运行。4.3.2定义方法定义方法v1声明方法头声明方法头v2声明方法体声明方法体Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数参数列表列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,又称类的方法,又称为成员函数,用为成员函数,用来规定类属性上来规定类属性上的操作,实现类的操作,实现类的内部功能的机的内部功能的机制,同时也是类制,同时也是类与外界进行交互与外界进行交互的重要窗口。的重要窗口。4.3.2定义方法定义方法-声明方法头声明方法头1声明方法头声明方法头方方法法头头一一般般由由方方法法名名、参参数数列列表表、返返回回类类型型、方法修饰符和方法抛出的例外五部分组成。方法修饰符和方法抛出的例外五部分组成。(1)方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。(2)类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。(3)参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,在方法参数表的右括号后加一个分号是语法错误。参数表以逗号为分隔符,其中包含了方法被调用时传递给方法的参数说明。对于方法定义中的每一个参数,方法调用时必须有一个参量与之对应,而且该参量的类型必须与对应参数类型相一致。4.3.2定义方法定义方法-声明方法体声明方法体方法头定义了方法的性质,方法体则定义了方法的具体内容。方法头定义了方法的性质,方法体则定义了方法的具体内容。方方法法体体通通常常起起到到两两种种作作用用,一一是是围围绕绕类类的的属属性性进进行行各各种种操操作作;二是与其他的类与对象进行数据交流、消息传递等操作。二是与其他的类与对象进行数据交流、消息传递等操作。在一个方法中定义另一个方法将产生语法错误。在一个方法中定义另一个方法将产生语法错误。(1)最最好好避避免免局局部部变变量量“屏屏蔽蔽”实实例例变变量量,在在一一个个类类中中不不使使用用同同名名标标识识符符就就可可以以做做到到这这一一点点;方方法法调调用用中中参参数数用用来来传传递递数数值、传递引用,同时方法还可以嵌套、递归调用。值、传递引用,同时方法还可以嵌套、递归调用。(2)方方法法体体中中如如果果指指定定了了非非void的的返返回回值值类类型型,方方法法中中就就必必须须包包含含一一条条return语语句句保保证证任任何何情情况况下下都都有有返返回回数数值值,return语句后面不能跟任何表达式;语句后面不能跟任何表达式;4.3.2定义方法定义方法-声明方法体声明方法体例如下面的语句为部门类例如下面的语句为部门类Department定义了若干方法:定义了若干方法:ClassDepartmentintm_DeptNo;部门编号部门编号Stringm_DeptName;部门名称部门名称intm_DeptTotalEmp;部门雇员数部门雇员数ManagerEmployeem_DeptMgr;部门主管部门主管intgetDeptNo()获取当前对象的部门号获取当前对象的部门号return_DeptNo;返回这个对象的部门号返回这个对象的部门号v4.3.3方法的调用方法的调用v1系统调用方法系统调用方法v2程序调用方法程序调用方法Java语言中调用方法有两类:语言中调用方法有两类:一类是需要程序书写专门的调用命令来调用的方法,一类是需要程序书写专门的调用命令来调用的方法,称为程序调用方法,例如称为程序调用方法,例如isPfime();另一类是运行过程中系统自动调用的方法,称为系统方另一类是运行过程中系统自动调用的方法,称为系统方法,例如我们前面程序中的法,例如我们前面程序中的action()、paint()、init()等。这等。这两类方法的定义和使用原则有很大差异。两类方法的定义和使用原则有很大差异。注意:系统调用方法的最大特点:不需要在程序里书写专门的调用方法的命令v4.3.3方法的调用方法的调用在类中调用类自身的方法,可以直接使用这个方法的在类中调用类自身的方法,可以直接使用这个方法的名称;调用其他对象或类的方法,则需要使用该对象或类名称;调用其他对象或类的方法,则需要使用该对象或类为前缀。例如在为前缀。例如在isSameDept()方法中,语句方法中,语句if(getDeptNo()dgetDeptNo()中通过中通过getDeptNo()调用当前对象自身的方法并获得当前对调用当前对象自身的方法并获得当前对象的部门号,通过象的部门号,通过dgetDeptNo()调用形式参数调用形式参数d的方法获的方法获得得d的部门编号。这里的形式参数的部门编号。这里的形式参数d也是一个也是一个Depamnent类类的对象。的对象。v4.3.3方法的调用方法的调用(实例实例)booleansetDeptNo(intNewNo)/把当前部门号重新设置称参数值把当前部门号重新设置称参数值if(NewNo0)/若给出的新部门号合法若给出的新部门号合法m_DeptNo=NewNo;/修改类属性修改类属性m_DeptNoreturntrue;/返回返回true,声明部门编号修改成功声明部门编号修改成功elsereturnfalse;/若形式参数给出新部门号非法,返回若形式参数给出新部门号非法,返回false4.3.4JavaAPI中的方法中的方法1Math类的方法类的方法2Math方法的调用实例方法的调用实例在Java中,JavaAPI(ApplicationProgramInterface,也称为Java类库)提供了丰富的类和方法,可以执行常见的算术运算、字符串操作、字符操作、输入输出、错误检查等操作。4.3.4JavaAPI中的方法中的方法-Math类的方法类的方法v表4-1Math类常用的方法方法方法说明说明方法方法说明说明abs(x)x的绝对值的绝对值(这个方法还有这个方法还有float,int和和long型值的版本型值的版本)max(x,y)取取x和和y中较大者。中较大者。ceil(x)不小于不小于x的最小整数的最小整数(向上取向上取整整)min(x,y)取取x和和y中较小者。中较小者。cos(x)x的余弦函数值的余弦函数值(x以弧度为单以弧度为单位位)pow(x,y)x的的y次幂次幂exp(x)指数方法指数方法e的的x次幂次幂sin(x)x的正弦函数值的正弦函数值(x以弧度为单位以弧度为单位)floor(x)不大于不大于x的最大整数的最大整数(向下取向下取整整)sqrt(x)x的平方根的平方根log(x)x的自然对数的自然对数(以以e为底为底)4.3.4JavaAPI中的方法中的方法-Math方法的调用实例方法的调用实例v表4-1Math类常用的方法 调调用用方方法法的的一一般般格格式式是是先先写写方方法法名名,然然后后是是左左括括号号,接接着着是是参参数数(argument)或或由由逗逗号号分分隔隔的的参参数数表表,最最后后是是右右括括号号。例例如如,要要计计算算并并且且打打印印出出900的的平平方方根根,调用方法的语句格式:调用方法的语句格式:System.out.prtntln(Math.sqrt(900);注意,所有Math类方法的调用必须采用方法名前冠以类名Math和点(.)运算符的形式。【例 4.2】掷一个六面骰子6000次的程序4.4访问控制符访问控制符Java推出了“访问控制修饰符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。这种访问控制的级别在“最大访问”和“最小访问”的范围之间,分别包括:public,“defaut”(无关键字),protected以及private。下面的列表说明访问控制修饰符含义:类的访问控制修饰符(一种符号)类的访问控制修饰符(一种符号)public公共访问公共访问属性与方法的访问控制修饰符(四种符号)属性与方法的访问控制修饰符(四种符号)符号符号publicprotectedprivateprotectedpriva含义含义公共访问公共访问保护访问保护访问私有保护访问私有保护访问私有访问私有访问4.4访问控制符访问控制符v4.4.1公共访问控制符公共访问控制符public Java中类的访问控制符只有一个:public,即公共的。一个类被声明为公共类,表明它可以被所有的其他类所访问和引用,这里的访问和引用是指这个类作为整体是可见和可使用的,程序的其他部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法。一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件,类的属性和方法能否为所有其他类所访问,还要看这些属性和方法自己的访问控制符。实例字段应用public关键字,这是一种非常糟糕的做法,破坏封装。4.4.2缺省访问控制符缺省访问控制符 假如一个类没有访问控制符,说明它具有缺省的访问控制特性。这种缺省的访问控制权规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性称为包访问性。通过声明类的访问控制符可以使整个程序结构清晰、严谨,减少可能产生类间干扰和错误。4.4.3私有访问控制符私有访问控制符private 用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类,来获取和引用。v1.对私有数据访问的方法对私有数据访问的方法例如有三个实例字段,它们含有在Employee类的实例内部被操作的数据。private string name;private double salary;private Date hireDay;private(私有的)关键字用来确保可以访问这些实例字段的只能是Employee类本身的方法。4.4.3私有访问控制符私有访问控制符privatev2.私有方法私有方法 在实现类时,我们使所有的数据字段都是私有的,因为公开的数据是危险的。对于方法又是什么情况呢?虽然大多数方法是公开的,但是私有方法也经常使用。这些方法只能被同一个分离的方法。总起来说,在下面的情况下可以选择私有方法:(1)与类的使用者无关的那些方法。(2)如果类的实现改变了,不容易维护的那些方法。4.4.4保护访问控制符保护访问控制符protectedv用用protected修修饰饰的的成成员员变变量量可可以以被被三三种种类类所所引引用用:该该类类自自身身、与与它它在在同同一一个个包包中中的的其其他他类类、在在其其他他包包中中的的该该类类的的子子类类。使使用用protected修修饰饰符符的的主主要要作作用用是是允允许许其其他他包包中中的的它它的的子子类类来来访访问问父父类类的的特特定定属性。属性。vprotected关关键键字字为为我我们们引引入入了了一一种种名名为为“继继承承”的的概概念念,它它以以现现有有的的类类为为基基础础,并并在在其其中中加加入入新新的的成成员员,同同时时不不会会对对现现有有的的类类产产生生影影响响我我们们将将这这 种种 现现 有有 的的 类类 称称 为为“基基 础础 类类”或或 者者“基基 本本 类类”(BaseClass)。亦亦可可改改变变那那个个类类现现有有成成员员的的行行为为。对对于于从从一一个个现现有有类类的的继继承承,我我们们说说自自己己的的新新类类“扩扩展展”(extends)了那个现有的类。了那个现有的类。v4.4.5私有保护访问控制符私有保护访问控制符privateprotectedprivate和protected按顺序连用构成一个完整的访问控制符:私有保护访问控制符。用pnvateprotected修饰的成员变量可以被两种类访问和引用,一种是该类本身,一种是该类的所有子类,不论这些子类是与该类在同一个包里,还是处于其他的包中。相对于protected,privateprotected修饰符把同一包内的非子类排除在可访问的范围之外,使得成员变量更专有于具有明确继承关系的类,而不是松散地组合在一起的包。访问控制符访问控制符当前当前类类(D)当前类的所有子当前类的所有子类类(C)当前类所在的当前类所在的包包(B)所有类所有类(A)privateprotected*publicprivateprotected图图4-3程序中的访问控制区域程序中的访问控制区域4.5静态修饰符、静态字段和方法v4.5.1静态修饰符静态修饰符(2)另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。static一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法。4.5静态修饰符、静态字段和方法v4.5.1静态修饰符静态修饰符static称为静态修饰符,它可以修饰类中的属性和方法。使用static(静态)关键字,可满足两方面的要求:(1)一种情形是只想用一个存储区域来保存一个特定的数据无论要创建多少个对象,甚至根本不创建对象;被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。v4.5.2静态字段静态字段 如如果果把把一一个个字字段段定定义义为为static.(静静态态的的),那那么么在在一一个个类类中中只只能能有有一个这类字段。一个这类字段。v4.5.3静态常量静态常量 静静态态变变量量是是很很少少见见的的。然然而而,静静态态常常量量却却很很普普遍遍。例例如如,MathMath类类中中定定义了一个静态常量:义了一个静态常量:public class Mathpublic class Math v4.5.4静态方法静态方法v4.5.5main方法方法4.5.4静态方法静态方法声明一个方法为声明一个方法为static至少有三重含义:至少有三重含义:(1)使使用用这这个个方方法法时时,应应该该使使用用类类名名做做前前缀缀,而而不不是是某某一一个具体的对象名;个具体的对象名;(2)static的的方方法法是是属属于于某某个个对对象象的的方方法法,在在这这个个对对象象创创建建时时对对象象的的方方法法在在内内存存中中拥拥有有自自己己专专用用的的代代码码段段;而而static的的方方法法是是属属于于整整个个类类的的,它它在在内内存存中中的的代代码码段段将将随随着着类类的定义而分配和装载,不被任何一个对象专有;的定义而分配和装载,不被任何一个对象专有;(3)由由于于static方方法法是是属属于于整整个个类类的的,所所以以它它不不能能操操纵纵和和处处理理属属于于某某个个对对象象的的成成员员变变量量,而而只只能能处处理理属属于于整整个个类类的的成员变量。成员变量。4.5.5main方法方法main方方法法并并不不对对任任何何对对象象施施加加操操作作。实实际际上上,当当程程序序开开始始执执行行时时,还还不不存存在在任任何何对对象象。静静态态方方法法被被执执行行,并构造程序所需的对象。并构造程序所需的对象。提示提示每个类都可以有一个每个类都可以有一个main方法。这是对类进行方法。这是对类进行单元测试的一个很方便技巧。单元测试的一个很方便技巧。4.6抽象类与抽象方法v4.6.1抽象类抽象类v当一个类被声明为abstract时,这个类被称为是抽象类。所谓抽象类就是没有具体实例对象的类。v针对这个问题,Java专门提供了一种机制,名为“抽象方法”。它属于一种不完整的方法,只含有一个声明,没有方法主体。下面是抽象方法声明时采用的语法:vabstract void X();v人类就是一个典型的抽象类。我们知道,类是对象的集合,对象是类的实例化,而人类这个类却不存在一个仅属于它的具体对象。abstract是抽象修饰符,可以用来修饰类或方法。v4.6.2抽象方法抽象方法 作作为为类类方方法法修修饰饰符符,abstract则则声声明明了了一一种种仅仅有有方方法法头头,而而没没有有具具体体的的方方法法体体和和操操作作实实现的抽象方法。现的抽象方法。可可见见,abstractabstract方方法法只只有有方方法法头头的的声声明明,而而用用一一个个分分号号来来代代替替方方法法体体的的定定义义:至至于于方方法法体体的的具具体体实实现现,那那是是由由当当前前类类的的不不同同子子类类在它们各自的类定义中完成的。在它们各自的类定义中完成的。需需要要特特别别注注意意的的是是,所所有有的的抽抽象象方方法法,都都必必须须存在于抽象类之中。存在于抽象类之中。除除了了抽抽象象方方法法,抽抽象象类类也也可可以以有有具具体体的的数数据据和和方方法法。例例如如,PersonPerson类类存存储储人人的的名名字字并并且且用用一一个个具体的方法来返回它。具体的方法来返回它。在在Java编编程程语语言言中中抽抽象象方方法法是是非非常常重重要要的的概概念念。在接口里你会大量的用到它。在接口里你会大量的用到它。4.7最终类、最终属性、最终方法与终结器final是最终修饰符,它可以修饰类、属性和方法。另外终结器的关键字与final很相近,一并介绍。4.7.1最终类最终类如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。被定义成final的类,通常是一些有特殊作用的、用来完成标准功能的类,将一个类定义为final则可以将它的内容、属性和功能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现的功能是准确无误的。v4.7.2最终属性最终属性无无论论static还还是是final字字段段,都都只只能能存存储储一一个个数数据据,而且不得改变。而且不得改变。许许多多程程序序设设计计语语言言都都有有自自己己的的办办法法告告诉诉编编译译器器某某个数据是个数据是“常数常数”。常数主要应用于下述两个方面:。常数主要应用于下述两个方面:(1)编译期常数,它永远不会改变;)编译期常数,它永远不会改变;(2)在在运运行行期期初初始始化化的的一一个个值值,我我们们不不希希望望它它发发生生变化。

    注意事项

    本文(【教学课件】第4章类和对象.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开