类与对象精选课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《类与对象精选课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 精选 课件
- 资源描述:
-
1、第第3章章 类与对象类与对象13.1 面向对象思想概述面向对象思想概述l程序面对的问题域程序面对的问题域客观世界客观世界l客观世界有很多事物客观世界有很多事物l事物有自己的状态和行为事物有自己的状态和行为l事物间有各种联系事物间有各种联系l通过事物间的联系,事物产生相互作用通过事物间的联系,事物产生相互作用l在一个面向对象系统在一个面向对象系统l对象是现实世界的事物的抽象对象是现实世界的事物的抽象l事物的状态抽象为对象的属性和方法事物的状态抽象为对象的属性和方法l事物间的关系通过对象间的关系表示事物间的关系通过对象间的关系表示l事物间的相互作用通过对象间的消息通信支持。事物间的相互作用通过对象
2、间的消息通信支持。23.1.1 对象对象l客观世界由具体事物构成,客观世界由具体事物构成,每个事物由自己的一组状每个事物由自己的一组状态和行为。态和行为。l把问题域中的事物抽象为把问题域中的事物抽象为对象,状态抽象为一组数对象,状态抽象为一组数据(属性),行为抽象为据(属性),行为抽象为一组操作服务(方法)一组操作服务(方法)l对象:对象:l对象标识:对象名对象标识:对象名l属性:一组数据(数据成员)属性:一组数据(数据成员)l方法:操作,服务(成员方方法:操作,服务(成员方法)法)一辆汽车一辆汽车静态特征:静态特征:颜色:蓝色颜色:蓝色型号:型号:XXXX马力:马力:100动态特征:动态特征
3、:行驶行驶转弯转弯停车停车car1属性:属性:“blue”,”XXXX“,100方法:方法:move,turn,stop33.1.2 类类l把具有共同性质的事物归为一类,把具有共同性质的事物归为一类,得出一个抽象的概念(抽象与分得出一个抽象的概念(抽象与分类原则)类原则)l对象是对事物的抽象对象是对事物的抽象l类是对对象的抽象类是对对象的抽象l面向对象语言中面向对象语言中l类是对同类的所有对象的抽象类是对同类的所有对象的抽象描述描述l属性描述属性描述l方法描述方法描述l类类l类标识:类名类标识:类名l属性说明(属性名,属性类型)属性说明(属性名,属性类型)l方法说明与实现方法说明与实现对象:对
4、象:car1属性:属性:“blue”,”XXXX“,3方法:方法:move,turn,stop对象:对象:car2属性:属性:“red”,”YYYY“,2.5方法:方法:move,turn,stop类:类:Car属性说明:属性说明:color 字符串,字符串,type 字符串,字符串,horsePower 整数整数方法说明与实现:方法说明与实现:move,turn,stop4类与对象的关系类与对象的关系l抽象与具体的关系抽象与具体的关系l类是同类对象的抽象描述类是同类对象的抽象描述l对象是符合类描述的具体事物对象是符合类描述的具体事物l我们称:对象是类的实例我们称:对象是类的实例l程序程序l先
5、定义类先定义类l创建类的对象,完成系统功能创建类的对象,完成系统功能模具模具-零件零件类型类型-变量变量53.1.3 消息通信消息通信l把对象之间产生相互作用所传递的信息称做消息。把对象之间产生相互作用所传递的信息称做消息。l通过给对象发送消息请求对象提供服务,实现对象间的协通过给对象发送消息请求对象提供服务,实现对象间的协作,完成相应的功能。作,完成相应的功能。l消息格式:消息格式:l接收消息的对象,请求的功能,传递的数据接收消息的对象,请求的功能,传递的数据l返回的结果返回的结果car2.move其他对象或全局函数对象:对象:car2属性:属性:“red”,”YYYY“,2.5方法:方法:
6、move,turn,stop消息消息对象的方法就是对象能提供的功能(服务),给对象发消息就是调用对象对象的方法就是对象能提供的功能(服务),给对象发消息就是调用对象的方法。的方法。63.1.4 对象之间的关系对象之间的关系l事物之间的关系体现为对象之间的关系事物之间的关系体现为对象之间的关系l对象之间有关系,才能进行消息通信对象之间有关系,才能进行消息通信l对象间关系的表示对象间关系的表示73.2 类类lJava程序设计过程就是定义类的过程程序设计过程就是定义类的过程l定义类定义类l定义类的对象及之间交互定义类的对象及之间交互lJava的类的类l系统定义的类(通用的类:输入输出,界面等)系统定
7、义的类(通用的类:输入输出,界面等)l自定义的类(特定应用相关的类)自定义的类(特定应用相关的类)8【例例3-1】矩形形状类矩形形状类class Rectangleint width;int height;void area()int a=width*height;System.out.println(面积为面积为+a);void perimeter()int a=2*(width+height);System.out.println(周长为周长为+a);93.2.1 类定义类定义修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口名列表接口名列表 数据
8、成员声明数据成员声明成员方法声明与实现成员方法声明与实现l类头类头l必须项:必须项:class 类名类名l可选项可选项lextends 父类名父类名 implements 接口名列表接口名列表l类的修饰符类的修饰符:public abstract|final l类体类体103.2.2 数据成员定义数据成员定义l数据成员要在类体中声明数据成员要在类体中声明修饰符修饰符 数据类型数据类型 变量名;变量名;l 必须项:数据类型必须项:数据类型 变量名;变量名;l可选项:可选项:l数据成员修饰符:数据成员修饰符:public|protected|private static final transie
9、nt volatile 113.2.3 成员方法的定义成员方法的定义修饰符修饰符 返回类型返回类型 方法名(方法名(形参列表形参列表)抛出异常列表抛出异常列表语句序列语句序列121、方法头、方法头l必须项:返回类型必须项:返回类型 方法名()方法名()l方法名方法名()l返回类型:方法返回结果的类型。若不需要返回值,则为返回类型:方法返回结果的类型。若不需要返回值,则为voidl可选项:可选项:l形参列表:形参列表:类型名类型名 形参名形参名1,类型名,类型名2 形成名形成名2.l 抛出异常列表抛出异常列表l方法的修饰符:方法的修饰符:public|protected|private stat
10、ic final|abstract nativesynchronized 132、方法体、方法体l语句语句l使用参数使用参数l返回值与返回值与return语句语句return 表达式;表达式;结束方法执行,将表达式的值作为方法的返回结果。(适于返回结束方法执行,将表达式的值作为方法的返回结果。(适于返回类型为非类型为非void)return;结束方法执行。(适于返回类型为结束方法执行。(适于返回类型为void)void drawRect(char c)int side=5;for(int i=0;iside;i+)for(int j=0;jside;j+)System.out.print(c)
11、;System.out.println();14if(x0)return x;else return -x if(x0)return x;return x;int f(int x)if(x0)return x;int f(int x)if(xr1.area()r.display();elser1.display();27l编译:编译:两个类在一个文件里:两个类在一个文件里:Test.java(以以public类的类名命名类的类名命名)一个文件最多一个一个文件最多一个public类(这里把主类设为类(这里把主类设为public类)类)javac Test.java两个类各在一个文件里:两个类各在
12、一个文件里:Test.java,Rectangle.javajavac Rectangle.javajavac Test.javal运行运行java Test;(Test 是是main函数所在类)函数所在类)编译完成后,每个编译完成后,每个类生成一个字节码类生成一个字节码文件文件Test.classRectangle.class283.4 方法重载方法重载l一个类中,多个方法使用同一个名字,称为方法的重载。一个类中,多个方法使用同一个名字,称为方法的重载。l方法重载的区分方法重载的区分l参数个数不同,或参数类型不同,这样的重载是有效的方法参数个数不同,或参数类型不同,这样的重载是有效的方法重载
13、。重载。l注意:方法名的不同,或返回值类型的不同是不能区分重载注意:方法名的不同,或返回值类型的不同是不能区分重载方法的。方法的。class Avoid f(int a,int b)void f(int a,int b,int c)void f(double a,double b)A a=new A();a.f(1,1);a.f(1,2,3);a.f(1.234,0.67);29class Rectangle.void scale(int s)width=width*s;height=height*s;void scale(int s,char type)if(type=w)width=wid
14、th*s;else if(type=h)heigh=height*s;303.5 对象的初始化与清除对象的初始化与清除l初始化:变量(对象)在使用前应该具有确定的值。初始化:变量(对象)在使用前应该具有确定的值。l清除:当变量或对象用完,其内存应回收清除:当变量或对象用完,其内存应回收l局部变量局部变量l初始化:方法体内定义的局部变量在使用前必须已经赋值,初始化:方法体内定义的局部变量在使用前必须已经赋值,否则编译错误。否则编译错误。l清除:方法体内局部变量在方法结束时由系统清除。清除:方法体内局部变量在方法结束时由系统清除。l对象对象l初始化:初始化:l清除:清除:313.5.1 构造方法构
15、造方法l构造方法与类同名,且没有返回值。形如:构造方法与类同名,且没有返回值。形如:类名(类名(形参列表形参列表)/语句语句有关构造方法的几条规则:有关构造方法的几条规则:l对象创建时一定会调用构造方法对象创建时一定会调用构造方法。构造方法也只能在创建对象时,。构造方法也只能在创建对象时,由由Java系统自动调用,以后不能再主动调用。系统自动调用,以后不能再主动调用。l对象创建时必须与构造方法格式一致对象创建时必须与构造方法格式一致,即构造方法若有形参列表,即构造方法若有形参列表,则创建对象时应传递匹配的实参列表。则创建对象时应传递匹配的实参列表。l若类没有定义构造方法也是可以的,若类没有定义
16、构造方法也是可以的,Java系统会自动为类创建一系统会自动为类创建一个不带参数的构造方法个不带参数的构造方法,当然这个方法的方法体是空的,什么初,当然这个方法的方法体是空的,什么初始化操作也不做。始化操作也不做。32构造方法的重载构造方法的重载l一个类可以有多个构造方法,创建对象时,要与其中一种构造一个类可以有多个构造方法,创建对象时,要与其中一种构造方法匹配。方法匹配。l一旦已经定义了构造方法,一旦已经定义了构造方法,Java系统就不会再自动创建不带系统就不会再自动创建不带参数的构造方法了参数的构造方法了(即使类中定义的构造方法中并没有不带参(即使类中定义的构造方法中并没有不带参数的构造方法
17、)。数的构造方法)。l不带参数的构造方法(简称无参构造方法,也常称为默认构造不带参数的构造方法(简称无参构造方法,也常称为默认构造方法,缺省构造方法)是很重要的构造方法方法,缺省构造方法)是很重要的构造方法,很多情况下会自,很多情况下会自动调用它。动调用它。33class Rectangleint width;int height;Rectangle()/构造方法构造方法(1),不带参数,不带参数width=1;height=1;Rectangle(int w,int h)/构造方法(构造方法(2),带两个参数),带两个参数width=w;height=h;void display()Syst
18、em.out.println(矩形宽为矩形宽为+width+,高为,高为+height);public class Testpublic static void main(String args)Rectangle r=new Rectangle();Rectangle r1=new Rectangle(3,5)r.display();r1.display();343.5.2 对象的初始化对象的初始化l所有的数据在使用前都应有值所有的数据在使用前都应有值l对象属性在使用前应有值(如:访问对象属性,调用对象成员对象属性在使用前应有值(如:访问对象属性,调用对象成员方法)方法)对象初始化的三种方法
19、对象初始化的三种方法l数据成员默认值数据成员默认值l在说明数据成员时直接初始化在说明数据成员时直接初始化l使用构造方法使用构造方法35类型类型默认值默认值byte(byte)0short(short)0int0long0Lfloat0.0fdouble0.0charu0000booleanfalse引用引用null1、默认值初始化、默认值初始化l在对象创建时,其数据成员会自动被初始化为默认值在对象创建时,其数据成员会自动被初始化为默认值class Aint x;void display()System.out.println(x);public class Testpublic static
20、void main(String args)A a=new A();a.display();int x;System.out.println(x);注:方法内创建的局部变量不会自动初始化注:方法内创建的局部变量不会自动初始化362、在说明类的数据成员时直接初始化、在说明类的数据成员时直接初始化class A int a=10;Rectangle r=new Rectangle(3,5);void f()3、使用构造方法初始化、使用构造方法初始化4、初始化的执行、初始化的执行先默认值初始化先默认值初始化再根据声明时赋值情况,设置数据成员的值再根据声明时赋值情况,设置数据成员的值最后调用构造方法最
21、后调用构造方法class A int x;int y=10;int z;Rectangle r;A()x=100;r=new Rectangle();373.5.3 对象的清除对象的清除lJava中的对象必须通过中的对象必须通过new关键字创建关键字创建l而而Java运行时系统提供了垃圾收集机制,能监测运行时系统提供了垃圾收集机制,能监测所有用所有用new创建的对象的使用状态,当对象不再创建的对象的使用状态,当对象不再需要的时候会自动清除它们,收回内存。需要的时候会自动清除它们,收回内存。383.6 this引用引用l在类的方法中(不包含静态方法)都隐含了一个在类的方法中(不包含静态方法)都隐
22、含了一个this引用,这引用,这个引用的类型为当前类,其指向的是调用方法的当前对象。个引用的类型为当前类,其指向的是调用方法的当前对象。lthis的使用方法与普通引用的使用是相同的。在类的方法中可的使用方法与普通引用的使用是相同的。在类的方法中可以自由使用这个引用来访问当前对象的数据成员,或针对当前以自由使用这个引用来访问当前对象的数据成员,或针对当前对象来调用方法。对象来调用方法。.int area()int a=this.width*this.height;return a;.Rectangle r=new Rectangle(2,3);int d=r.area();/隐含效果隐含效果Re
23、ctangle.area(r);39this的使用的使用l返回当前对象自己返回当前对象自己l区分同名数据成员与形参区分同名数据成员与形参 l在构造方法中使用构造方法在构造方法中使用构造方法class Aint x;void f(int x)this.x=x;class Rectangleint width;int height;Rectangle(int w,int h)width=w;width=h;Rectangle()this(1,1);/调用第一个构造方法调用第一个构造方法403.7 引用类型理解与应用引用类型理解与应用l基本类型:变量声明的同时创建了特定类型的数据(进行了内基本类型:
24、变量声明的同时创建了特定类型的数据(进行了内存分配)存分配)l引用类型:所有其他类型都为引用类型(类,数组,接口),引用类型:所有其他类型都为引用类型(类,数组,接口),其特点为:进行变量声明的时候只创建引用变量,而不创建具其特点为:进行变量声明的时候只创建引用变量,而不创建具体对象。具体对象需要用体对象。具体对象需要用new创建(分配内存)创建(分配内存)l引用与对象分离,其对应关系不固定,可以变化。这样就有可引用与对象分离,其对应关系不固定,可以变化。这样就有可能产生一些前面讲基本类型时没有遇到过的问题:能产生一些前面讲基本类型时没有遇到过的问题:(1)一个引用先后指向不同的对象的情况。)
25、一个引用先后指向不同的对象的情况。(2)多个引用指向同一个对象的情况。)多个引用指向同一个对象的情况。413.7.1 理解引用类型理解引用类型l引用支持的运算引用支持的运算l赋值赋值l=,!,!=1、赋值运算、赋值运算(1)被)被new创建的对象赋值。(表示:引用指向了一个对象)创建的对象赋值。(表示:引用指向了一个对象)(2)被同类型的引用变量赋值。(注意:这会引起两个引用)被同类型的引用变量赋值。(注意:这会引起两个引用指向同一个对象)指向同一个对象)(3)被赋值以)被赋值以null。(表示引用不再指向任何对象)。(表示引用不再指向任何对象)42class Rectangleint wid
展开阅读全文