Java 语言程序设计(面向对象)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章面向对象(上)CopyrightJLUCCSTKanghui23.1面向对象的概念面向过程:创建一个窗口(以c语言为例)创建结构体:定义窗口的大小,位置,颜色,背景等属性,为窗口的各种操作定义相应的函数如HideWindow,MoveWindow,MinimizeWindow这些函数的参数是被操作的窗口,谓语和宾语的关系。面向对象:创建一个窗口定义窗口时,除了要指定属性(大小,位置,颜色,背景等)外,还要指定该窗口可能具有的动作(隐藏,移动,最小化等)这些方法(Hide,Move,Minimize)被调用时,窗口是主语,方法是谓语(如:某个窗口要隐藏),主语与谓语的关系。面向对象的特征:封装(Encapsulation),继承(Inheritance),多态(Polymorphism)CopyrightJLUCCSTKanghui33.2类与对象类:对某一类事物的描述,是抽象的、概念上的定义;对象(实例):实际存在的该类事物的每个个体。面向对象程序设计的重点:类的设计。类3个对象实例CopyrightJLUCCSTKanghui4(一)类的基本概念类是组成Java程序的基本要素;封装了一类对象的状态和方法用来定义对象的模板类的实现包括两部分:类声明和类体基本格式为class类名{…类体的内容……}class是关键字,用来定义类;类名必须是合法的Java标识符;类的声明部分类体CopyrightJLUCCSTKanghui5类的定义class植物//“植物”分别是类名{…}classPerson//习惯上类名的第一个字母大写,但不是必须的;{intage;//类Person的属性,或类成员变量voidshout()//shout是方法也叫类的成员函数{System.out.println(“oh,mygod!Iam“+age);}}shout方法可以直接访问同一个类中的age变量如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量。CopyrightJLUCCSTKanghui6(一)类的基本概念类体写类的目的:描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{“,“}”以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。类体的内容由两部分构成变量的定义,用来刻画属性,方法的定义,用来刻画功能.例:一个类名为“Trapezia”的类,类体内容的变量定义部分定义了4个float类型的变量“上底”,“下底”,“高”和“laderArea”;方法定义部分定义了两个方法“计算面积”和“修改高”.ProgramCopyrightJLUCCSTKanghui7成员变量和局部变量成员变量:类体中的变量定义部分所定义的变量局部变量:方法体中定义的变量和方法的参数成员变量和局部变量的类型:Java中的任何一种数据类型,包括基本类型、引用类型、数组类型和对象;对象也称作类类型变量.classPeople{intboy;floata[];//类成员变量Workmanzhiwei;//类类型成员变量,即对象…voidf(){booleancool;Workmanzhangboy;//类类型局部变量……}}classWorkman{doublex;……}CopyrightJLUCCSTKanghui8成员变量和局部变量成员变量在整个类内都有效,局部变量只在定义它的方法内有效。classSun{intdistance;intfind(){inta=12;distance=a;//合法,distance在整个类内有效.returndistance;}voidg(){inty;y=a;//非法,因为a以失效,而方法g内又没有定义变量a}}成员变量与它在类体中书写的先后位置无关,例如,Trapezia类也可以写成•人们习惯先介绍属性再介绍功能classTrapezia{float上底,laderArea;float计算面积(){laderArea=(上底+下底)*高/2.0f;returnladerArea;}float下底;void修改高(floath){高=h;}float高;}classTrapezia{float上底,下底,高,laderArea;float计算面积(){laderArea=(上底+下底)*高/2.0f;returnladerArea;}void修改高(floath){高=h;}}CopyrightJLUCCSTKanghui10成员变量和局部变量成员变量的划分实例变量:实例成员变量类变量:类成员变量,或静态成员变量成员变量的类型前面加上关键字staticclassdog{floatx;staticinty;……}x是实例变量,而y是类变量.CopyrightJLUCCSTKanghui11成员变量和局部变量若局部变量的名字与成员变量的名字相同成员变量被隐藏,在该方法内暂时失效.classTom{intx=98,y;voidf(){intx=3;y=x;}}y得到的值是3,不是98.如果方法f中没有“intx=3;”语句,y的值将是98.CopyrightJLUCCSTKanghui12成员变量和局部变量若在该方法内想使用成员变量,必须使用关键字this.classTriangle{floatsideA,sideB,sideC,lengthSum;voidsetSide(floatsideA,floatsideB,floatsideC){this.sideA=sideA;this.sideB=sideB;this.sideC=sideC;}}this.sideA,this.sideB,this.sideC分别表示成员变量sideA,sideB,sideC.CopyrightJLUCCSTKanghui13对象的产生与使用创建对象的步骤:对象的声明和为对象分配内存对象的声明一般格式:类的名字对象名字;如,PeoplezhangPing为声明的对象分配内存使用new运算符和类的构造方法为声明的对象分配内存如果类中没有构造方法,系统会调用默认的构造方法默认的构造方法是无参的,构造方法的名字必须和类名相同.如,zhangPing=newPeople();CopyrightJLUCCSTKanghui14对象的产生classXiyoujiRenwu{floatheight,weight;Stringhead,ear,hand,foot,mouth;voidspeak(Strings){System.out.println(s);}}classA{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie;//声明对象.zhubajie=newXiyoujiRenwu();//为对象分配内存,使用new运算符和默认的构造方法.….…}}CopyrightJLUCCSTKanghui15对象的产生classPoint{intx,y;Point(inta,intb){x=a;y=b;}}publicclassA{publicstaticvoidmain(Stringargs[]){Pointp1,p2;//声明对象p1和p2.p1=newPoint(10,10);//使用new、类中的构造方法为对象分配内存p2=newPoint(23,35);//使用new、类中的构造方法为对象分配内存………}}如果类里定义了一个或多个构造方法,Java则不提供默认的构造方法.p1=newPoint();//该创建对象非法CopyrightJLUCCSTKanghui16对象的内存模型声明对象时的内存模型XiyoujiRenwuzhubajie;空对象,声明对象变量zhubajie后,zhubajie的内存中还没有任何数据空对象不能使用,因为它还没有得到任何“实体”.必须为对象分配内存,即为对象分配实体.对象的声明和分配内存可由一个步骤完成,XiyoujiRenwuzhubajie=newXiyoujiRenwu();zhubajieCopyrightJLUCCSTKanghui17对象的内存模型对象分配内存后的内存模型当系统见到zhubajie=newXiyoujiRenwu();时,为XiyoujiRenwu类的成员变量分配内存空间,并赋初值;给对象变量zhubajie返回一个引用成员变量的首地址确保分配给height,weight,head,ear,mouth,hand,foot的内存单元将由zhubajie操纵管理CopyrightJLUCCSTKanghui18对象的内存模型classXiyoujiRenwu{floatheight,weight;Stringhead,ear,hand,foot,mouth;voidspeak(Strings){System.out.println(s);}}classA{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie;zhubajie=newXiyoujiRenwu();…….….}}0.00.0nullnullnullnullnullweightheightheadearmouthhandfootzhubajie0xAB12CopyrightJLUCCSTKanghui19对象的内存模型创建多个不同的对象XiyoujiRenwuzhubajie=newXiyoujiRenwu();XiyoujiRenwusunwukong=newXiyoujiRenwu();这些对象将被分配不同的内存空间,改变其中一个对象的状态不会影响其它对象的状态.0.00.0nullnullnullnullnullweightheightheadearmouthhandfootzhubajie0xAB120.00.0nullnullnullnullnullweightheightheadearmouthhandfootsunwukong0x111ACopyrightJLUCCSTKanghui20对象的产生Personp1=newPerson();执行完后的内存状态CopyrightJLUCCSTKanghui21对象的使用1.对象的属性:对象操纵自己的变量.对象创建之后,就有了自己的变量,即对象的实体.通过使用运算符“.”,对象可以实现对自己的变量的访问.2.对象的功能:对象调用类中的方法对象创建之后,可以使用运算符“.”调用创建它的类中的方法,从而产生一定的行为功能.当对象调用类中的一个方法时,方法中的局部变量被分配内存空间.方法执行完毕,局部变量即刻释放内存.例PCopyrightJLUCCSTKanghui22对象的使用创建对象后,使用“对象名.对象成员”的格式,访问对象的成员(包括属性和方法)classTestPerson{publicstaticvoidmain(String[]args){Personp1=newPerson();Personp2=newPerson();p1.age=-30;p1.shout();p2.shout();}}classPerson{intage;voidshout(){System.out.println(oh,mygod!Iam+age);}}CopyrightJLUCCSTKanghui23对象的生命周期CopyrightJLUCCSTKanghui24对象的比较对象间的比较:==:判断两个对象的地址是否相等equals():String类的一个成员方法判断两个对象的内容是否相等怎样比较两个数组对象的内容是否相等查看JDK文档classCompare2{publicstaticvoidmain(String[]args

1 / 152
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功