《第03讲-面向对象概念、类和对象精选PPT.ppt》由会员分享,可在线阅读,更多相关《第03讲-面向对象概念、类和对象精选PPT.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第03讲讲-面向对象概面向对象概念、类和对象念、类和对象第1页,此课件共54页哦2前讲回顾前讲回顾qJava的 8种基本数据类型qJava的字符串数据类型q数组的声明、创建及访问q三大流程控制结构的使用qJCreator 和 Eclipse开发工具的使用第2页,此课件共54页哦3本讲内容摘要本讲内容摘要2-1q现实中的对象和类q面向对象编程概念及与面向过程编程的区别q类的定义、实例化及使用 q创建实例变量和类变量,实例方法和类方法q创建方法及方法的重载q构造函数(构造方法)、构造函数重载qgetXXX和setXXX函数q类的封装、继承和多态第3页,此课件共54页哦4本讲内容摘要本讲内容摘要2
2、-2q创建新对象 new运算符 q类成员变量(字段)初始值q对象和引用q类的静态成员q基本数据类型的封装类q目标1:能将一个事物抽象、设计并创建相应的类q目标2:创建对象并使用第4页,此课件共54页哦5面向对象编程面向对象编程(OOP)q二十世纪七十年代发展起来的q结构化编程的解决方案q模拟人类的思维过程q将数据和方法以“对象”为基体进行操作q面向过程是将一个待解决的问题分解成一系列步骤,一步步完成每一个细的操作,全部完成之后,问题即解决。Object Oriented Programs第5页,此课件共54页哦6万物皆为对象万物皆为对象q现实世界中所有的事物都是对象现实世界中所有的事物都是对象
3、q对象都具有某些特征,并具有某些行为特征:车型、载客人数、起始站点、终点、行为:启动、行驶、刹车、开门、特征:姓名、年龄、学历、体重、行为:学习、散步、跑步、吃饭、第6页,此课件共54页哦7对象的概念对象的概念q对象可以是看得见、摸得着的有形的实体,如计算机、飞机、汽车等等;q对象也可以表示人或组织所起的作用,如治病、教学、生产等;q对象还可以表示事件,如各种事故、演出、战斗、开会等;q对象更可以表示规则,如各种专家规则、约束条件、正则表达式等。第7页,此课件共54页哦8对象的两个要素对象的两个要素q属性属性q用于描述对象静态特性(结构特性)的一个数据项。如描述一个人可用姓名、性别、身份证号等
4、属性。q方法方法(也称服务)q用于描述对象动态特性(行为特性)的一个操作系列。如每个人都具有工作、学习等行为特性。第8页,此课件共54页哦9对象的封装性能对象的封装性能q对象就是一组属性和相关的方法的集合。这是面向对象方法与结构化方法的重大区别之一。q对象将数据和施加于数据上的操作打包成一个不可分割的最基本的模块,使得仅有该类的有限个方法才可以操纵、改变这些数据。第9页,此课件共54页哦10类类q在现实社会中,先有对象,后有类。q把众多的事物归纳、划分成类是我们在认识世界时经常采用的方法。q分类所依据的原则是抽象抽象,也就是忽略事物的非本质特征,只注意那些与当前目标有关的本质特征本质特征。q找
5、出事物的共性并将具有共同性质的事物划分为同一个类类。第10页,此课件共54页哦11抽象抽象各种多边形对象抽象多边形类属性顶点边的颜色填充颜色方法绘制擦除移动第11页,此课件共54页哦12类的概念类的概念q同一类中的对象有相同的属性(也称为成员变量,它描述该类的静态特性或结构特性)q同一类中的对象有相同的方法(也称服务,它描述该类的行为特性或动态特性)q同一类中的对象遵守相同的语义规则。(共同的约束或规则)第12页,此课件共54页哦13数据抽象数据抽象q数据抽象是识别特定实体的属性和方法的过程属性属性方法方法类类第13页,此课件共54页哦14类的定义类的定义q一旦定义类后,就可以用这种新类来创建
6、该类型的对象。q类就是对象的模板(template)。q而对象就是类的一个实例(instance)。q类包含数据成员(属性)和函数(方法)。q数据成员往往通过函数(方法)访问的。q类是具有共同属性和行为的对象的抽象。第14页,此课件共54页哦15类和对象类和对象类对象抽象抽象实例实例属性或状态属性或状态操作或行为操作或行为数据或变量数据或变量方法方法第15页,此课件共54页哦16类定义类定义qJava中定义类的通用格式:classClassNametypevariable1;typevariableN;typemethodname1(parameter-list)/方法体typemethodn
7、ameN(parameter-list)/方法体类的名称实例变量(字段)成员方法第16页,此课件共54页哦17变量定义变量定义q定义实例变量(对象变量)在类Myclass中创建一个float型的变量aFloatclassMyClassfloataFloat;q定义类变量(静态变量)类变量是使用静态关键字来声明的classMyClassstaticintage;第17页,此课件共54页哦18创建方法创建方法q方法一般的形式:accesstypemethodname(parameter-list)/方法体 方法名称返回类型访问修饰符,可选参数列表,可选第18页,此课件共54页哦19对象作为参数对象
8、作为参数q当对象作为函数参数时,在函数中只能改变该对象的状态(属性),但不能改变该对象的引用qJava中的参数传递类型是值传递第19页,此课件共54页哦20改变对象状态改变对象状态classDemointa,b;Demo(inti,intj)a=i;b=j;/可以在函数中改变对象状态voidchangeState(Demoobj)obj.a=50;obj.b=40;第20页,此课件共54页哦21值传递值传递Obj1Obj2obj1obj2xyxy调用swapObj(obj1,obj2)voidswapObj(Demox,Demoy)Demotemp=y;y=x;x=temp;交换对象的引用第2
9、1页,此课件共54页哦22关键字关键字thisq关键字 this与对象关联q它用于指示当前对象publicclassDogpublic String name;publicDog(Stringname)this.name=name;publicStringgetName()returnthis.name;第22页,此课件共54页哦23类成员的作用域类成员的作用域数据或方法数据或方法privatepublic不可从类的外部访问(例如某人的钱包)可从类的外部访问(例如超市购物行为)第23页,此课件共54页哦24类方法类方法q类方法只可以操作类变量,q类方法不能访问实例变量。ClassTeststa
10、ticintcount=0;Test()count+;staticintgetCount()returncount;publicstaticvoidmain(Stringargs)System.out.println(Test.getCount()第24页,此课件共54页哦25方法重载方法重载q方法重载是Java实现面向对象的多态性机制的一种方式。q同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。q返回类型不同并不足以构成方法重载。q当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。第25页,此课件共54页哦26方法重载示例方法重载示例cla
11、ssTestpublicvoiddisplay(inti)System.out.println(“我是整型的数:”+i);publicvoiddisplay(floati)System.out.println(“我是浮点型的数:”+i);publicvoiddisplay(doublei)System.out.println(“我是双精度型的数:”+i);第26页,此课件共54页哦27将参数传递给将参数传递给Java应用程序应用程序q在命令行中进行参数传递,q例如:javaMainTestabc这样,就把参数abc传递给了应用程序MainTest。注意:参数之间用空格隔开,如果参数本身包括空格
12、,必须借助引号将其括起来。如:javaMainTesta“bc”d第27页,此课件共54页哦28构造函数构造函数q构造方法在对象创建时初始化内部状态。q构造函数与它的类同名,自动调用。q构造函数没有返回类型。classBoxdoublewidth,height,depth;Box()width=10;height=10;depth=10;第28页,此课件共54页哦29构造函数的重载构造函数的重载q构造函数也可以重载classBoxdoublewidth,height,depth;Box()Box(intw,inth,intd)第29页,此课件共54页哦30getXXX和和setXXX函数函数p
13、ublicclassBoxfloatchang,kuan,gao;publicvoidsetChang(floatchang)this.chang=chang;publicfloatgetChang()returnthis.chang;第30页,此课件共54页哦31面向对象编程的原则面向对象编程的原则封装封装继承继承多态多态第31页,此课件共54页哦32封装封装q封装是允许有选择地隐藏类中的属性和方法私有公有类在类的外部不能访问在类的外部可以访问第32页,此课件共54页哦33封装下的访问限制封装下的访问限制q访问限制符:public、private、protectedq访问限制符标明属性或方法
14、是否可以被调用qpublic:公开,都可以访问;qprivate:私有,外部不可访问;qprotected:受保护的,子类和同一个包里的类之间可以访问;q编程演示访问限制第33页,此课件共54页哦34继承继承q继承(重用)现有类生成新类动物节肢动物昆虫脊椎动物哺乳动物两栖动物人类第34页,此课件共54页哦35继承关系继承关系q 父类(超类)是有其它类继承其行为的类q继承其它类的类称为子类动物脊椎动物父类子类哺乳动物人类父类子类父类子类第35页,此课件共54页哦36多态概念多态概念q多态是具有表现多种形态的能力的特征q多态与继承并不是孤立的,他们之间存在着紧密的联系,多态是建立在继承的基础之上的
15、q不同的子类继承自同一个父类,父类的同一个方法以不同的方式实现第36页,此课件共54页哦37多态示例多态示例q父类(艺术家)有一个方法:创作q每个子类实现了自己的“创作”方法q假定子类是雕塑家,子类、分别是作曲家和画家q当调用不同的艺术家的“创作”方法时,将会进行不同的“创作”行为。艺术家方法:创作()雕塑家创作()雕塑作曲家创作()作曲画家创作()绘画第37页,此课件共54页哦38创建对象创建对象q创建一个类时,就创建了一种新的数据类型。q要获得一个类的对象需要两步:q第一步,你必须声明该类类型的一个变量,这个变量没有定义一个对象。q第二步,该声明要创建一个对象的实际的物理拷贝,并把对于该对
16、象的引用赋给该变量。通过使用 new运算符实现。第38页,此课件共54页哦39new 运算符运算符q使用下列语法可创建对象:new构造函数();q关键字new通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。q一旦new完成分配和初始化内存,它就将调用构造函数来执行对象初始化。classBoxDemopublicstaticvoidmain(Stringargs)Boxb=newBox();第39页,此课件共54页哦40类成员变量初始值类成员变量初始值qJava保证了在任何代码使用该对象之前,已至少将对象中的状态信息初始化为可预知的缺省值。类型类型缺省值缺省值byte(byte)
17、0short(short)0int0long0Lbooleanfalse类型类型缺省值缺省值charu0000 float0.0Fdouble0.0D对象引用对象引用null第40页,此课件共54页哦41访问控制修饰符访问控制修饰符2-1q对于一个class内的数据成员或方法,可修饰为:qpublic:可以被任何class访问;qprotected:可以被同一包内的其它class访问,也能被它自己的子类访问;q无修饰符:可以被同一包内的其它class访问;qprivate:只能在本class内访问。新闻联播新闻联播中央红头文件中央红头文件公司内部通知公司内部通知部门会议部门会议第41页,此课件
18、共54页哦42访问控制修饰符访问控制修饰符2-2publicprotectedprivate类内类内包内包内子类子类所有类所有类第42页,此课件共54页哦43嵌套方法调用嵌套方法调用q一方法调用另外一个方法。这样可以提高代码重用,也利于模块化设计。classBoxdoublelength=100;doublewidth=80;doubleheight=60;publicvoidprintCubage()/打印容积System.out.println(“容积是:”+getCubage();publicdoublegetCubage()/计算容积returnheight*width*length;
19、第43页,此课件共54页哦44对象和引用对象和引用Boxb1=newBox();Boxb2=b1;heightwidthlengthb1Box对象对象b2引用引用第44页,此课件共54页哦45类的静态成员类的静态成员q用static修饰符修饰,可以是变量、方法或代码块q类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。q类的静态成员可以与类的名称一起使用(也可以和对象的名称一起使用),而无需创建类的对象。q静态变量或静态方法也称为类变量或类方法。第45页,此课件共54页哦46静态变量静态变量q不管创建了类的多少实例,整个类中静态变量的副本只有一个。q引用静态变量的方法:q通过类的名称
20、q通过引用类的任一实例class Boxstatic int sides=6;/侧面的数量Box b=new Box()int s=b.sides;int s=Box.sides;推荐不推荐第46页,此课件共54页哦47类类(静态静态)方法方法q类(静态)方法只能访问其它的静态成员q类方法没有 thisclassBoxstaticintsides=6;/侧面的数量intj;publicstaticintgetSides()returnsides;returnj;/错误,不能访问非静态字段第47页,此课件共54页哦48静态块静态块q静态块仅在该类被加载时执行一次。q只能初始化类的静态数据成员。c
21、lassBox/每个侧面的颜色staticColorcolorOfSides=newColor6;staticfor(inti=0;i6;i+)intc=(int)(255*Math.random();colorOfSidesi=newColor(c,c,c);第48页,此课件共54页哦49基本数据类型的封装类基本数据类型的封装类q基本数据类型不是面向对象的数据类型。q可通过相应的“封装类”来将基本数据类型“封装”。基本数据类型基本数据类型封装类封装类booleanBooleanbyteBytecharCharacterdoubleDoublefloatFloatintIntegerlongL
22、ongshortShort第49页,此课件共54页哦50封装类的举例封装类的举例 float f1=100.00f;Float F1=new Float(f1);double d1=F1.doubleValue();String类型类型int类型类型Integer.parseInt(String s)public static void main(String args)int sum=0;for(int i=0;i args.length;i+)sum+=Integer.parseInt(argsi);第50页,此课件共54页哦51小结小结3-1q面向对象编程:ObjectOrientedP
23、rogramsq对象的两个要素是:属性和方法q找出事物的共性并将具有共同性质的事物划分为同一个类q类具有封装性、继承性和多态性q深刻理解面向对象理论概念对于编写良好程序意义极其重大第51页,此课件共54页哦52小结小结3-2q类就是对象的模板q对象是类的一个实例q类包含:数据成员,函数(方法)q关键字 this与对象关联q构造方法在对象创建时初始化内部状态第52页,此课件共54页哦53小结小结3-3q关键字new通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。q无访问修饰符的类成员可以被同一包内的其它class访问q静态块仅在该类被加载时执行一次q基本数据类型不是面向对象的数据类型。第53页,此课件共54页哦54提问时间提问时间第54页,此课件共54页哦