版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章 抽象(chuxing)、封装与类主要(zhyo)内容一、抽象(chuxing)与封装 二、Java 的类 三、对象的创建与使用 四、参数传递 五、匿名对象1、抽象抽象内涵去除掉对象中与主旨无关的次要部分,或是暂时不予考虑的部分抽取出与研究工作有关的实质性的内容加以考察软件开发方法中所使用的抽象类型(1)过程抽象(2)数据抽象(1)过程(guchng)抽象将整个(zhngg)系统功能划分为若干部分,强调(qing dio)功能完成的过程和步骤面向过程的软件开发方法采用的就是这种抽象方法使用过程抽象有利于控制、降低整个程序的复杂度缺点:这种方法本身自由度较大,难于规范化和标准化,操作起来有
2、一定难度,在质量上不易保证(2)数据抽象2、封装利用抽象数据类型将数据和操作封装在一起数据被保护在抽象数据类型的内部系统其他部分只能通过被授权操作与抽象数据交互在面向对象程序设计(chn x sh j)中抽象数据类型通过(tnggu)“类”来代表(dibio)每个类都封装相关的数据和操作在实际开发过程中类常用来构建系统内部的模块封装特性把类内的数据保护得很严密,模块与模块间仅通过严格控制的界面进行交互使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误保证程序中数据的完整性和安全性主要内容 一、抽象与封装二、Java 的类 三、对象的创建与使用 四、参数
3、传递 五、匿名(nmng)对象二. Java的类1. Java 类概念(ginin) 2. 类的定义(dngy)与修饰 3. 域 4. 方法1、Java类概念类(Class)和对象(Object)是面向对象程序设计方法中最核心的概念。类是对某一类事物的描述(共性),是抽象的、概念上的定义;对象则是实际存在的属该类事物的具体的个体(个性),因而也称为实例(Instance) 。1、Java类概念(ginin)类是Java程序的基本组成(z chn)要素封装了一类(y li)对象的状态和方法,是该类对象的原型Java程序设计就是定义类的过程Java程序中定义的类的数目和功能都是有限的编程时还需要用
4、到大量系统定义好的类,即Java类库中的类1、Java类概念 类的构成:类头+类体 类体由数据成员(属性、域)与函数成员封装而成。 Java语言把数据成员称为域变量、属性、成员变量等;把函数(hnsh)成员称为成员方法(fngf),简称为成员(chngyun)方法。举例:圆柱体类。二. Java的类 1. Java 类概念2. 类的定义与修饰 3. 域 4. 方法(1)定义类定义类(声明类)实际是定义类的静态属性和动态属性(方法)。用户定义一个类实际上就是定义一个新的抽象数据类型。必须(bx)先定义(dngy)类,然后(rnhu)才可利用所定义的类来声明相应的变量,并创建对象。(1)定义类 定
5、义类的语法结构(1)定义类实例 实例:圆柱体类的定义(2)类的修饰符Java程序在定义类时,可在class之前增加若干类的修饰符,修饰限定所定义的类的特性类的修饰符分为访问控制符和非访问控制符两大类,有些类的修饰符也可以用来修饰类中的域或方法本节讨论类的非访问控制符(2)类的修饰符abstract抽象类是没有具体对象的概念类抽象类不能直接(zhji)被实例化,一般作为(zuwi)其它类的超类举例(j l)假设“鸟”是一个类,它可以派生出若干个子类如“鸽子”、“燕子”、“麻雀”、“天鹅”等问题:那么是否存在一只实实在在的鸟,它既不是鸽子,也不是燕子或麻雀,它不是任何一种具体种类的鸟,而仅仅是一只
6、抽象的“鸟”呢?(2)类的修饰符abstract抽象类是其所有子类的公共属性的集合使用该特性可提高程序开发和维护效率以“鸟”的概念为例假设需要向别人(birn)描述“天鹅(tin )”是什么,通常(tngchng)都会这样说:“天鹅是一种脖子长长,姿态优美的候鸟”可见定义是建立在已知道什么是“鸟”的前提之上只有在被进一步问及“鸟”是什么时,才会具体解释说:“鸟是一种长着翅膀和羽毛的卵生动物”而不会在一开始就把“天鹅”描述成“是一种脖子长长,姿态优美,长着翅膀和羽毛的卵生动物”(2)类的修饰符abstract举例已有两个类Circle和Rectangle,完成相关参数计算(2)类的修饰符abst
7、ract举例问题(wnt)假设(jish)有若干个Circle,以及(yj)若干个Rectangle,希望计算它们的总面积直截了当的做法是将它们分别放到两个数组中,用两个循环,加上一个加法,这种做法不是最理想的如果还有其它形状,triangle, ellipses等上述方法显得“累赘”我们希望有一种统一的表示,例如用一个数组shape ,接受所有的形状,然后用for(i=0; i 使用 - 销毁,对象完成工作后,将被销毁,所占用的资源将被系统回收。2、对象的使用通过对象来引用对象成员的格式如下: 对象名.对象成员如,volu.radius = 2.8; volu.height = 5;如果引用
8、的是成员方法,只要在成员方法名的圆括号内提供所需参数即可,如果方法不需要参数,则用空括号。如:volu.area()一个类多个对象,它们的成员变量(binling)分配在不同的内存,因此修改某一对象的成员变量(binling)时其他不受影响。2、对象(duxing)的使用App6_1.java2、对象的使用App6_1.java3、在类定义内调用方法方法调用场景一:方法在类定义的外部被调用,在类声明之外用到成员名称时需指明对象; ;场景二:在类定义内部,方法之间可以相互调用,若在类内部使用类自己的成员时不必指明对象名举例(j l):3、在类定义(dngy)内调用方法在同一个类的定义(dngy)
9、里面,某一方法可以直接调用本类的其他方法而不需加对象名。若要强调是“对象本身的成员”的话,则可以在成员名前加this关键字,即“this.成员名”。此时this即代表调用此成员的对象。例如:主要内容 一、抽象与封装 二、Java 的类 三、对象的创建与使用四、参数传递 五、匿名对象四. 参数传递1、以变量为参数调用(dioyng)方法 2、以数组作为参数或返回值的方法(fngf)调用1、以变量为参数(cnsh)调用方法 调用方法并传递参数时,参数其实就是方法的自变量,所以参数要放在方法的括号内来进行传递。括号内的参数可以是数值型、字符串型,甚至是对象。方法的参数属于局部变量。1、以变量为参数调
10、用方法举例1App6_4.java1、以变量为参数调用(dioyng)方法若在通过方法调用(dioyng),将外部传入的参数赋值给类的成员变量,方法(fngf)的形式参数与类的成员变量同名时, 如何处理?1、以变量为参数调用方法举例2四. 参数传递 1、以变量为参数调用方法2、以数组作为参数或返回值的方法调用方法的参数传递与返回调用对象方法时,要传递参数在传递参数时,Java 是值传递,即,在调用一个方法时,将表达式的值复制给形式参数对于引用(ynyng)型变量,传递的值是引用值(可以(ky)理解为内存地址),因此方法中对数据的操作可以改变(gibin)对象的属性方法的返回返回基本类型返回引用
11、类型,就可以存取对象实体(1)以数组为参数调用方法当参数是基本数据类型时,采用传值方式调用;当参数是引用型的变量时,则是传址方式调用。传递数组指明参数是一个数组,实参只给出数组名返回值为数组类型的方法。若返回一个一维整型数组,则方法前加int。(1)以数组为参数调用(dioyng)方法App6_5.java:以一维数组为参数(cnsh)的方法调用,求若干数的最小值。 (2)返回值为数组类型(lixng)的方法将一个矩阵转置后输出。 主要内容 一、抽象与封装 二、Java 的类 三、对象的创建与使用 四、参数传递五、匿名对象五、匿名对象 以当一个对象被创建之后,在调用该对象的方法时,也可以不定义
12、对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象。 例如(lr): Cylinder volu=new Cylinder(); volu.SetCylinder(2.5, 5,3.14); 若改写(gixi)为: new Cylinder().SetCylinder(2.5, 5,3.14); 则Cylinder()就是(jish)匿名对象。五、匿名对象 使用匿名对象的两种情况:如果一个对象只需要进行一次方法调用;将匿名(nmng)对象做为实参传递给一个方法调用。例:一个(y )程序中有一个getSomeOne方法要接收(jishu)一个MyClass类对象作为参数,方法的定义
13、如下:Public static void getSomeOne(MyClass c)可以用下面的语句调用这个方法。getSomeOne (new MyClass() );主要内容 一、抽象与封装 二、Java 的类 三、对象的创建与使用 四、参数传递 五、匿名对象编程题找出4*5矩阵中值最小和最大的元素,并分别(fnbi)输出其值及所在的行号和列号。编程题产生(chnshng)0100之间8个随机整数,并利用(lyng)冒泡排序法将其升序排序后输出。思想:每次比较相邻的数,若次序不对,交换次序。冒泡排序实例编程题产生0100之间8个随机整数,并利用冒泡排序法将其升序排序后输出。思想:每次比较
14、相邻的数,若次序不对,交换次序。编程题从键盘输入一个字符串和一个字符,从该字符串中删除给定的字符。编程题编程统计用户从键盘输入的字符串中所包含的字母、数字(shz)和其他字符的个数。编程题将用户从键盘输入的每行数据(shj)都显示输出,直到输入“exit”字符串,程序运行结束(jish)拓展:成员变量与局部变量成员变量:在类中定义的变量局部变量:在方法中定义的变量区别:从语法形式看成员变量属于类,局部变量是指方法中定义的变量或者参数;成员变量可以被访问修饰符、static等修饰,而局部变量则不能被他们所修饰;共同点:都可以被final修饰拓展(tu zhn):成员变量与局部变量成员(chngyun)变量:在类中定义(dngy)的变量局部变量:在方法中定义的变量区别:从在内存中的存储方式看成员变量是对象的一部分,而对象是存在于堆内存中的局部变量时存在于栈内存中的拓展:成员变量与局部变量成员变量:在类中定义的变量局部变量:在方法中定义的变量区别:从在内存中的生存时间看成员变量是对象的一部分,随着对象的创建而存在;局部变量随着方法的调用而产生,随着方法调用的结束而自动介绍拓展(tu zhn):成员变量与局部变量成员(chngyun)变量:在类中定义(dngy
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 35819-2018天然橡胶生产良好操作规范》
- 深度解析(2026)《GBT 35749-2017锦纶66弹力丝》
- 深度解析(2026)《GBT 35575-2017电磁屏蔽薄膜通 用技术要求》
- 深度解析(2026)《GBT 35641-2017工程测绘基本技术要求》
- 深度解析(2026)《GBT 35450-2017聚碳酸酯薄膜及片材》
- 广东省茂名市高州市2026年九年级下学期期中化学试题附答案
- 营养师题库及解析
- 电机与电气控制技术 第2版 教案6:电动机连续运行控制电路调试
- 书法篆刻刀法运用题库及答案
- 呼吸机相关性肺炎(VAP)护理专项考核试题及答案解析
- (完整)外研版小学英语单词表(一起)一至六年级
- 黑龙江省佳木斯市向阳区立新小学-主题班会-送你一朵小红花期末表彰班会【课件】
- 2024年中国蔬菜种子行业全景速览
- 国家安全学经济安全
- UL1012标准中文版-2018非二类变压器UL中文版标准
- DB32T 4855-2024群体性预防接种疫苗遴选方法
- XX道路危险运输企业安全管理台账标准化表格
- 2024丨抖音生活服务平台通案
- DB14T 846-2014中小跨径混凝土梁桥抗震设计指南
- 伸缩缝施工安全技术交底
- 学前课程与幸福童年
评论
0/150
提交评论