版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第四章第四章面向对象面向对象传智风清扬高级软件人才实作培训专家高级软件人才实作培训专家! !本章内容l面向对象思想l类与对象及其使用l对象的内存图l成员变量和局部变量的区别l匿名对象l封装(private)lthis关键字l构造方法lstatic关键字北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向对象思想引入l前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序
2、等,同样需要将这些功能封装到相应的方法中。这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类封装来这多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。这就是面向对象思想的编程方式。北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向过程思想概述l我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
3、l在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。l那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。l面向过程的代表语言:C语言北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向对象思想概述l当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在
4、一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。接下来我们看看面向对象到底是什么?北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向对象思想概述l面向对象思想概述l面向对象是基于面向过程的编程思想l面向对象思想特点l是一种更符合我们思想习惯的思想l可以将复杂的事情简单化l将我们从执行者变成了指挥者l角色发生了转换北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向对象思想举例l面向对象思想举例l买电脑l吃饭l洗衣服l万事万物皆对象l面向过程思想和面向对象思想的代码举例l把大象装进冰箱北京传智播客教育 高级软件人
5、才实作培训专家高级软件人才实作培训专家! !面向对象开发,设计,特征l面向对象开发l就是不断的创建对象,使用对象,指挥对象做事情。l面向对象设计l其实就是在管理和维护对象之间的关系。l面向对象特征l封装(encapsulation)l继承(inheritance)l多态(polymorphism)北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类与对象关系l我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。比如:去超市买东西的计费系统,去银行办业务的系统。l我们如何表示一个现实世界事物呢:l属性就是该事物的描述信息l行为就是该事物能够做什么l举例:学生事物l我们
6、学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类与对象关系l类:是一组相关的属性和行为的集合l对象:是该类事物的具体体现l举例:l类 学生l对象班长就是一个对象北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类与对象(图例)l类与对象的关系如图北京传智播客教育 图纸汽车汽车汽车高级软件人才实作培训专家高级软件人才实作培训专家! !类的定义l现实世界的事物l属性人的身高,体重等l行为人可以学习,吃饭等lJava中用class描述事物也是如此l成员变量就是事物的属性l成员方法就
7、是事物的行为l定义类其实就是定义类的成员(成员变量和成员方法)北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类与对象案例l学生类(讲解)l如何定义l按照事物到类的过程一步步分析l如何使用l创建对象:l类名 对象名 = new 类名();l对象名.成员变量l对象名.成员方法l手机类(学生练习)北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !对象内存图l1个对象的内存图l一个对象的基本初始化过程l2个对象的内存图l方法的共用l3个对象的内存图l其中有两个引用指向同一个对象北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !成员变
8、量和局部变量的区别l在类中的位置不同l成员变量 类中方法外l局部变量 方法内或者方法声明上l在内存中的位置不同l成员变量 堆内存l局部变量 栈内存l生命周期不同l成员变量 随着对象的存在而存在,随着对象的消失而消失l局部变量 随着方法的调用而存在,随着方法的调用完毕而消失l初始化值不同l成员变量 有默认的初始化值l局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !形式参数问题l基本类型作为形式参数l引用类型作为形式参数北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !匿名对象l匿名对象:就是没
9、有名字的对象。l是对象的一种简化表示形式l匿名对象的两种使用情况l对象调用方法仅仅一次的时候l作为实际参数传递北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !封装概述l封装概述l是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。l好处:l隐藏实现细节,提供公共的访问方式l提高了代码的复用性l提高安全性。l封装原则:l将不需要对外提供的内容都隐藏起来。l把属性隐藏,提供公共方法对其访问。北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !private关键字lprivate关键字:l是一个权限修饰符。l可以修饰成员(成员变量和成员方法)l被priv
10、ate修饰的成员只在本类中才能访问。lprivate最常见的应用:l把成员变量用private修饰l提供对应的getXxx()/setXxx()方法l一个标准的案例的使用北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !this关键字lthis:代表所在类的对象引用l记住:l方法被哪个对象调用,this就代表那个对象l什么时候使用this呢?l局部变量隐藏成员变量l其他用法后面和super一起讲解北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !构造方法l构造方法作用概述l给对象的数据进行初始化l构造方法格式l方法名与类名相同l没有返回值类型,连vo
11、id都没有l没有具体的返回值l构造方法注意事项l如果你不提供构造方法,系统会给出默认构造方法l如果你提供了构造方法,系统将不再提供l构造方法也是可以重载的北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类的成员方法l成员方法其实就是我们前面讲过的方法l方法具体划分:l根据返回值l有明确返回值方法l返回void类型的方法l根据形式参数l无参方法l带参方法北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !一个基本类的标准代码写法l类l成员变量l构造方法l无参构造方法l带参构造方法l成员方法lgetXxx()lsetXxx()l给成员变量赋值的方式l无参
12、构造方法+setXxx()l带参构造方法北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !一个基本类的标准代码案例l标准的学生类(讲解)l感觉调用getXxx()输出学生信息比较麻烦,加入一个方法show(),输出学生对象的成员变量信息。l标准的手机类(练习)l注意l目前的代码是为了练习的一种标准格式l给成员变量赋值有两种方式,可以只写一种l如果不单独获取数据,可以不写getXxx()方法北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !类的初始化过程lStudent s = new Student();在内存中做了哪些事情?l加载Student.c
13、lass文件进内存l在栈内存为s开辟空间l在堆内存为学生对象开辟空间l对学生对象的成员变量进行默认初始化l对学生对象的成员变量进行显示初始化l通过构造方法对学生对象的成员变量赋值l学生对象初始化完毕,把对象地址赋值给s变量北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !面向对象练习l定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试了Test,进行测试。l定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试了Test2,进行测试。l定义一个员工类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,以及一个显示所
14、有成员信息的方法。并测试。l定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !static关键字l可以修饰成员变量和成员方法lstatic关键字特点l随着类的加载而加载l优先于对象存在l被类的所有对象共享l这也是我们判断是否使用静态关键字的条件l可以通过类名调用lstatic关键字注意事项l在静态方法中是没有this关键字的l静态方法只能访问静态的成员变量和静态的成员方法北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !静态的内存图l静态的内容存在于方法区的静态区北京传智播客教育 高级软件
15、人才实作培训专家高级软件人才实作培训专家! !静态变量和成员变量的区别l所属不同l静态变量属于类,所以也称为为类变量l成员变量属于对象,所以也称为实例变量(对象变量)l内存中位置不同l静态变量存储于方法区的静态区l成员变量存储于堆内存l内存出现时间不同l静态变量随着类的加载而加载,随着类的消失而消失l成员变量随着对象的创建而存在,随着对象的消失而消失l调用不同l静态变量可以通过类名调用,也可以通过对象调用l成员变量只能通过对象名调用北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !main方法是静态的lpublic static void main(String args
16、) lpublic 被jvm调用,访问权限足够大。lstatic 被jvm调用,不用创建对象,直接类名访问lvoid被jvm调用,不需要给jvm返回值lmain 一个通用的名称,虽然不是关键字,但是被jvm识别lString args 以前用于接收键盘录入的l演示案例北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !制作帮助文档l制作工具类lArrayToolsl制作帮助文档(API)ljavadoc -d 目录 -author -version ArrayTool.java北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !如何使用帮助文档l找到文档,打开文档l点击显示,找到索引,出现输入框l你应该知道你找谁?举例:Scannerl看这个类的结构(需不需要导包)l成员变量字段l构造方法构造方法l成员方法方法l看这个类的说l看构造方法l看成员方法l然后使用北京传智播客教育 高级软件人才实作培训专家高级软件人才实作培训专家! !通过API学习Math类lMath类概述lMath包含用于执行基本数学运算的方法lMath类特点l没有构造方法,因为成员都是静态的lMath类讲解一个方法l获取随机数l获取1-100之间的随机数l案例:l猜数字小游戏北京传智播客教育 高级软件人才实作培训专家高级软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47038-2026航空航天 铝及铝合金化学转化膜层
- 钢桁架安装施工方案
- 学校筹建处考勤制度
- 培训人员外出考勤制度
- 小学考勤制度范本
- 商业物业考勤制度
- 卖场上班考勤制度
- 阿里云产品技术顾问面经及要点梳理
- 家长教育考勤制度
- 实行弹性考勤制度
- 以热爱为翼为青春飞驰+课件+-2026届高三高考百日冲刺励志主题班会
- 2026-2030中国汽车加气站行业市场发展分析及发展趋势与投资机会研究报告
- 2026年福建莆田市涵江区区属一级国有企业高级管理人员招聘2人笔试备考题库及答案解析
- 2026福建莆田市涵江区选聘区属一级国有企业高级管理人员2人笔试备考题库及答案解析
- 2026年AI原生网络架构项目投资计划书
- 萍乡市事业单位2026年统一公开招聘工作人员备考题库含答案详解(突破训练)
- 2026春季开学教职工大会校长精彩发言:大格局!3个变局、3个确定性、3个转变
- 《非物质文化遗产概论(第三版)》全套教学课件
- 家庭教育学整套课件
- 现代规模化猪场饲养管理与疫病控制
- 中风病的病机病理
评论
0/150
提交评论