




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
张孝祥IT课堂
-Java就业培训教程主讲老师:□□□第1页第三讲面向对象(上)第2页理解面向对象概念面向过程 在一种构造体中定义窗口大小,位置,颜色,背景等属性,对窗口操作函数与窗口本身定义没有任何关系,如HideWindow,MoveWindow,MinimizeWindow,这些函数都需要接收一种代表要被操作窗口参数,是一种谓语与宾语关系。面向对象定义窗口时,除了要指定在面向过程中要求那些属性,如大小,位置,颜色,背景等外,还要指定该窗口也许具有动作,如隐藏,移动,最小化等。这些函数被调用时,都是以某个窗口要隐藏,某个窗口要移动语法格式来使用,这是一种主语与谓语关系。面向对象三大特性封装(Encapsulation)继承(Inheritance)多态(Polymorphism)
第3页类与对象类是对某一类事物描述,是抽象、概念上定义;对象是实际存在该类事物每个个体,因而也称实例(instance)。假如将对象比作汽车,那么类就是汽车设计图纸。因此面向对象程序设计重点是类设计,而不是对象设计。
第4页类定义classPerson{ intage; voidshout() { System.out.println(“oh,mygod!Iam“+age); }}age是类属性,也叫类组员变量。shout是办法也叫类组员函数。shout办法能够直接访问同一种类中age变量,假如一种办法中有与组员变量同名局部变量,该办法中对这个变量名访问是局部变量,而不再是组员变量。第5页对象产生Personp1=newPerson();执行完后内存状态第6页对象产生当一种对象被创建时,会对其中多种类型组员变量自动进行初始化赋值。除了基本数据类型之外都是变量类型都是引用类型,如上面Person及前面讲过数组。
第7页对象使用创建新对象之后,我们就能够使用“对象名.对象组员”格式,来访问对象组员(包括属性和办法)classTestPerson{ publicstaticvoidmain(String[]args) { Personp1=newPerson(); Personp2=newPerson(); p1.age=-30; p1.shout(); p2.shout(); }}上面程序运行内存布局如下列图
第8页对象生命周期第9页对象比较“==”运算符与equals()办法区分如何比较两个数组对象内容是否相等第10页匿名对象我们也能够不定义对象句柄,而直接调用这个对象办法。这样对象叫做匿名对象,如:newPerson().shout();假如对一种对象只需要进行一次办法调用,那么就能够使用匿名对象。我们经常将匿名对象作为实参传递给一种函数调用。第11页实现类封装性假如外面程序能够随意修改一种类组员变量,会造成不可预料程序错误,就象一种人身高,不能被外部随意修改,只能通过多种摄取营养办法去修改这个属性。在定义一种类组员(包括变量和办法)时,使用private关键字说明这个组员访问权限,这个组员成了类私有组员,只能被这个类其他组员办法调用,而不能被其他类中办法所调用。第12页实现类封装性为了实现良好封装性,我们一般将类组员变量申明为private,再通过public办法来对这个变量进行访问。对一种变量操作,一般都有读取和赋值操作,我们分别定义两个办法来实现这两种操作,一种是getXxx()(Xxx表达要访问组员变量名字),用来读取这个组员变量操作,另外一种是setXxx()用来对这个组员变量赋值。一种类一般就是一种小模块,我们应当让模块仅仅公开必须要让外界懂得内容,而隐藏其他一切内容。我们在进行程序详细设计时,应尽可能避免一种模块直接修改或操作另一种模块数据,模块设计追求强内聚(许多功能尽可能在类内部独立完成,不让外面干预),弱耦合(提供应外部尽可能少办法调用)。用总统指挥一支军队例子来说明这种效果。
第13页类封装所带来长处隐藏类实现细节;让使用者只能通过事先定制好办法来访问数据,能够方便地加入控制逻辑,限制对属性不合理操作;便于修改,增强代码可维护性;第14页编程试验:我们在一种类中定义了一种private类型组员变量,接着产生了这个类两个实例对象,请问第一种对象办法中,能否以“第二个对象.组员”格式访问第二个对象中那个private组员变量?第15页构造函数定义与作用构造办法特性它具有与类相同名称;它不含返回值;它不能在办法中用return语句返回一种值注意:在构造办法里不含返回值概念是不一样于“void”,在定义构造办法时加了“void”,成果这个办法就不再被自动调用了。构造办法作用:当一种类实例对象刚产生时,这个类构造办法就会被自动调用,我们能够在这个办法中加入要完成初始化工作代码。这就仿佛我们要求每个“人”一出生就必须先洗澡,我们就能够在“人”构造办法中加入完成“洗澡”程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就无须再在每个人刚出生时一种一种地告诉他们要“洗澡”了。第16页构造办法重载和一般办法重载同样,重载构造办法具有不一样个数或不一样类型参数,编译器就能够根据这一点判断出用new关键字产生对象时,该调用哪个构造办法了。产生对象格式是:new类名(参数列表);重载构造办法能够完成不一样初始化操作,如:p3=newPerson(“Tom”,18);语句,会做这样几件事:创建指定类新实例对象,在堆内存中为实例对象分派内存空间,并调用指定类构造办法,最后将实例对象首地址赋值给引用变量p3。第17页p3=newPerson(“Tom”,18)内存状态变化过程分析第18页构造办法某些细节在java每个类里都最少有一种构造办法,假如程序员没有在一种类里定义构造办法,系统会自动为这个类产生一种默认构造办法,这个默认构造办法没有参数,在其办法体中也没有任何代码,即什么也不做。由于系统提供默认构造办法往往不能满足编程者需求,我们能够自己定义类构造办法,来满足我们需要,一旦编程者为该类定义了构造办法,系统就不再提供默认构造办法了。申明构造办法,如无特殊需要,应使用public关键字,在我们前面例子中,能够使用private访问修饰符吗?第19页this是什么?假如func2办法被调用,一定是事先已有了一种存在对象,func2被作为那个对象办法被使用。在func2内部能引用别对象,同样也能引用func2所属那个对象。在func2中,自己所属那个对象引用名称是什么呢?this关键字在java程序里作用和它词义很接近,它在函数内部就是这个函数所属对象引用变量。
第20页this引用句柄寄存位置每个组员办法内部,都有一种this引用变量,指向调用这个办法对象,类中组员办法与this之间关系如图第21页this引用句柄应用一种类中组员办法能够直接调用同类中其他组员,其实我们在一种办法内部使用“this.其他组员”引用方式和直接使用“其他组员”效果是同样,那this尚有多大作用呢?在有些情况下,我们还是非得用this关键字不可:让类组员变量名和对其进行赋值组员办法形参变量同名是必要,这样代码谁看了都能明白这两个变量是彼此有关,老手看到函数定义,就能琢磨出函数中代码,大大节省了他人和自己后来阅读程序时间。假设我们有一种容器类和一种部件类,在容器类某个办法中要创建部件类实例对象,而部件类构造办法要接收一种代表其所在容器参数。构造办法是在产生对象时被java系统自动调用,我们不能在程序中象调用其他办法同样去调用构造办法。但我们能够在一种构造办法里调用其他重载构造办法,不是用构造办法名,而是用this(参数列表)形式,根据其中参数列表,选择对应构造办法。第22页垃圾回收过程分析c++中析构办法java中finalize()办法System.gc作用第23页函数参数传递
—基本数据类型参数传递
第24页函数参数传递
—引用数据类型参数传递第25页函数参数传递
—引用参数传递一种问题分析第26页static静态变量当我们编写一种类时,其实就是在描述其对象属性和行为,而并没有产生实质上对象,只有通过new关键字才会产生出对象,这时系统才会分派内存空间给对象,其办法才能够供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象情况下,某些特定数据在内存空间里只有一份,例如所有中国人都有个国家名称,每一种中国人都共享这个国家名称,无须在每一种中国人实例对象中都单独分派一种用于代表国家名称变量。编写使用静态变量统计一种类产生实例对象个数程序第27页static静态办法在静态办法里只能直接调用同类中其他静态组员(包括变量和办法),而不能直接访问类中非静态组员。这是由于,对于非静态办法和变量,需要先创建类实例对象后才可使用,而静态办法在使用前不用创建任何对象。静态办法不能以任何方式引用this和super关键字(super关键字在下一章解说)。与上面道理同样,由于静态办法在使用前不用创建任何实例对象,当静态办法被调用时,this所引用对象主线就没有产生。main()办法是静态,因此JVM在执行main办法时不创建main办法所在类实例对象,因而在main()办法中,我们不能直接访问该类中非静态组员,必须创建该类一种实例对象后,才能通过这个对象去访问类中非静态组员,这种情况,我们在后来例子中会数次遇到。第28页静态代码块一种类中能够使用不包括在任何办法体中静态代码块(staticblock),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性初始化。类中静态代码块被自动执行,尽管我们产生了类多种实例对象,但其中静态代码块只被执行了一次。当一种程序中用到了其他类,类是在第一次被使用时候才被装载,而不是在程序启动时就装载程序中所有也许要用到类。第29页单态设计模式设计模式是在大量实践中总结和理论化之后优选代码构造、编程格调、以及处理问题思考方式。设计模式就想是典型棋谱,不一样棋局,我们用不一样棋谱,免得我们自己再去思考和摸索。失败为成功之母,不过要以大量时间和精力为代价,假如有成功经验可借鉴,没有人再乐意去甘冒失败风险,我们没有理由不去理解和掌握设计模式,这也是Java开发者提升本身素质一种较好选择。使用设计模式也许会制约你去创新,不过真正故意义创新只能出自少数天才,虽然你就是那个天才,虽无须因循守旧,但也不也许完全不去理解和借鉴前人成功经验。第30页单态设计模式所谓类单态设计模式,就是采取一定办法确保在整个软件系统中,对某个类只能存在一种对象实例,并且该类只提供一种取得其对象实例办法。假如我们要让类在一种虚拟机中只能产生一种对象,我们首先必须将类构造办法访问权限设置为private,这样,就不能用new操作符在类外部产生类对象了,但在类内部仍能够产生该类对象。由于在类外部开始还无法得到类对象,只能调用该类某个静态办法以返回类内部创建对象,静态办法只能访问类中静态组员变量,因此,指向类内部产生该类对象变量也必须定义成静态。第31页理解main办法语法由于java虚拟机需要调用类main()办法,因此该办法访问权限必须是public,又由于java虚拟机在执行main()办法时无须创建对象,因此该办法必须是static,该办法接收一种String类型数组参数,该数组中保存执行java命令时传递给所运行类参数。
第32页内部类 —在类中直接定义内部类
嵌套类能够直接访问嵌套它类组员,包括private组员,不过嵌套类组员却不能被嵌套它类直接访问。在内部类对象保存了一种对外部类对象引用,当内部类组员办法中访问某一变量时,假如在该办法和内部类中都没有定义过这个变量,内部类中对this引用会被传递给那个外部类对象引用。第33页内部类 —在类中直接定义内部类
假如用static修饰一种内部类,这个类就相称于是一种外部定义类,因此static内部类中可申明static组员,不过,非static内部类中组员是不能申明为static。static内部类不能再使用外层封装类非static组员变量,这个道理不难想象!因此static嵌套类很少使用。第34页内部类—在类中直接定义内部类假如函数局部变量(函数形参也是局部变量),内部类组员变量,外部类组员变量重名,我们应当按下面程序代码所使用方式来明确指定我们真正要访问变量。publicclassOuter{
privateintsize;
publicclassInner {
privateintsize;
publicvoiddoStuff(intsize) {
size++;//引用是doStuff函数形参 this.size++;//引用是Inner类中组员变量 Outer.this.size++;//引用Outer类中组员变量 } }}第35页内部类如何被外部引用classOuter{ privateintsize=10; publicclassInner { publicvoiddoStuff() { System.out.println(++size); } }}publicclassTestInner{ publicstaticvoidmain(String[]args) { Outerouter=newOuter(); Outer.Innerinner=outer.newInner(); inner.doStuff(); }}第36页内部类
—在办法中定义内部类嵌套类并非只能在类里定义,也能够在几个程序块范围之内定义内部类。例如,在办法中,或甚至在for循环体内部,都能够定义嵌套类。在办法中定义内部类只能访问办法中final类型局部变量,用final定义局部变量相称于是一种常量,它生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司墙体宣传方案范本
- 美发活动方案么(3篇)
- 护士应急知识培训课件
- 教师教学心得体会范文8篇
- 外架加固镀锌网施工方案
- 设备维修试题及答案
- 维修技师试题及答案
- 品质工程师试题及答案
- 数据安全审计试题及答案
- 工地装修试题及答案
- 多媒体教室使用的课件
- 2025年下半年广西现代物流集团社会招聘校园招聘笔试参考题库附带答案详解(10套)
- 2025年小学教研室教学计划
- 2025年福建省中小学教师招聘考试试卷-教育综合基础知识试题及答案
- 会展物品租赁管理办法
- 2025年安徽省初中学业水平考试中考物理真题试卷(中考真题+答案)
- 2025年放射医学技术师中级技术职称考试试题(附答案)
- 贩卖人口罪与强迫劳动罪
- 新员工入职职业道德培训
- 婚内债务隔离协议书范本
- 2025秋部编版(2024)八年级上册语文上课课件 第三单元 阅读综合实践
评论
0/150
提交评论