书签 分享 收藏 举报 版权申诉 / 86
上传文档赚钱

类型类与对象精选课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3282369
  • 上传时间:2022-08-16
  • 格式:PPT
  • 页数:86
  • 大小:246.02KB
  • 【下载声明】
    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

    26、th;int height;Rectangle(int width,int height)this.width=width;this.height=height;void set(int width,int height)this.width=width;this.height=height;void display()System.out.println(矩形宽为矩形宽为+width+,高为,高为+height);public class Testpublic static void main(String args).43Rectangle a=new Rectangle(1,2);Rec

    27、tangle b=new Rectangle(3,4);a=b;a.display();b.display();a.set(5,6);a.display();b.display();a=null;b=null;a.display();/错误错误1234ab1234ab56ab一个对象如没有一个对象如没有任何引用指向它,任何引用指向它,对象就是无用的,对象就是无用的,无用的内存由无用的内存由Java垃圾收集机垃圾收集机制回收。制回收。当对象使用完当对象使用完毕时,可以将毕时,可以将引用变量赋值引用变量赋值为为nullnullnullab56442、比较运算中的、比较运算中的=,!=l两个引用变量

    28、可以进行两个引用变量可以进行相等与不等的比较,其相等与不等的比较,其比较的是引用的值,而比较的是引用的值,而不是引用所指向的对象不是引用所指向的对象是否相等是否相等l引用变量可以与引用变量可以与null进行进行相等与不等的比较,来相等与不等的比较,来判断引用变量是否指向判断引用变量是否指向了对象了对象Rectangle a=new Rectangle(3,4);Rectangle b=new Rectangle(3,4);if(a=b)System.out.println(“相等相等1”);a=b;if(a=b)System.out.println(“相等相等2”);a=null;a.disp

    29、lay();/错误错误if(a!=null)a.display();453.7.2 方法参数传递方法参数传递l参数传递方式参数传递方式l按值传递:按值传递:Java的的基本类型基本类型数据采用这种传递方式。数据采用这种传递方式。其特点是,实参将其值传递给形参,形参是实参的一其特点是,实参将其值传递给形参,形参是实参的一个本地拷贝,对形参的操作对实参没有影响。个本地拷贝,对形参的操作对实参没有影响。l按引用传递按引用传递:Java的的引用类型引用类型的对象都采用这种传递的对象都采用这种传递方式。其特点是:参数传递时,实际传递的是对象的方式。其特点是:参数传递时,实际传递的是对象的引用,而不是对象

    30、本身。形参是引用,而不是对象本身。形参是“实参引用实参引用”的一个的一个本地拷贝,这样形参会指向实参对象,通过形参引用本地拷贝,这样形参会指向实参对象,通过形参引用对对象的操作会作用到实际的实参对象上。对对象的操作会作用到实际的实参对象上。46【例例3-4】按值传递对实参的影响按值传递对实参的影响class Avoid parameterChangeTest(int n)n=10;public class Testpublic static void main(String args)A a=new A();int b=13;a.parameterChangeTest(b);System.ou

    31、t.println(b);形参形参n与实参与实参b没没有直接联系,对有直接联系,对n的改变对的改变对b没影响没影响47【例例3-5】按引用传递对实参的影响按引用传递对实参的影响class Avoid parameterChangeTest(B n)n.i=10;class Bint i;public class Testpublic static void main(String args)A a=new A();B b=new B();b.i=100;a.parameterChangeTest(b);System.out.println(b.i);形参形参n即代表实即代表实参对象参对象b,通

    32、过,通过n改变数据成员,改变数据成员,就是改变实参对就是改变实参对象象48【例例3-6】按引用传递对实参的影响按引用传递对实参的影响class Avoid parameterChangeTest(B n)n=new B();n.i=10;class Bint i;public class Testpublic static void main(String args)A a=new A();B b=new B();b.i=100;a.parameterChangeTest(b);System.out.println(b.i);对形参引用的重新对形参引用的重新赋值对实参并没有赋值对实参并没有影响

    33、。影响。49引用类型做参数应用引用类型做参数应用class Rectangleint width;int height;Rectangle()width=0;height=0;Rectangle(int w,int h)width=w;height=h;Rectangle(Rectangle r)width=r.width;height=r.height;void set(int width,int height)this.width=width;this.height=height;void set(Rectangle r)width=r.width;height=r.height;50bo

    34、olean equals(Rectangle r)return(width=r.width)&(height=r.height);void display()System.out.println(矩形宽为矩形宽为+width+,高为,高为+height);public class Testpublic static void main(String args)Rectangle a=new Rectangle();Rectangle b=new Rectangle(3,5);Rectangle c=new Rectangle(b);System.out.println(b=c);System.

    35、out.println(b.equals(c);513.7.3 返回值为引用类型返回值为引用类型l方法的返回值也可以为引用类型。方法的返回值也可以为引用类型。l当需要返回对象时,返回的实际是对象的引用,而不是对象本当需要返回对象时,返回的实际是对象的引用,而不是对象本身。当将这个返回的引用赋值给某个声明的引用变量时,这个身。当将这个返回的引用赋值给某个声明的引用变量时,这个引用变量会指向这个返回值(引用)指向的对象。引用变量会指向这个返回值(引用)指向的对象。52【例例3-8】引用类型做返回值(返回当前对象)引用类型做返回值(返回当前对象)class Rectangleint width;in

    36、t height;Rectangle(int w,int h)width=w;height=h;void set(int width,int height)this.width=width;this.height=height;void display()System.out.println(矩形宽为矩形宽为+width+,高为,高为+height);Rectangle scale(int s)width=width*s;height=height*s;return this;53Rectangle scale(int s,char type)if(type=w)width=width*s;e

    37、lse if(type=h)height=height*s;return this;public class Testpublic static void main(String args)Rectangle a=new Rectangle(3,5);a.display();Rectangle b=a.scale(3);b.display();b.set(1,1);/语句(语句(a)a.display();/语句(语句(b)b.display();/语句(语句(c)54【例例3-9】引用类型做返回值(返回新对象)引用类型做返回值(返回新对象)class Rectangleint width;i

    38、nt height;Rectangle(int w,int h)width=w;height=h;void display()System.out.println(矩形宽为矩形宽为+width+,高为,高为+height);Rectangle scale(int s)Rectangle r=new Rectangle(width*s,height*s);return r;Rectangle scale(int s,char type)Rectangle r;if(type=w)r=new Rectangle(width*s,height);else if(type=h)r=new Rectan

    39、gle(width,height*s);else r=new Rectangle(width,height);return r;55public class Testpublic static void main(String args)Rectangle a=new Rectangle(3,5);a.display();Rectangle b=a.scale(3);b.display();a.display();563.7.4 类的数据成员为引用类型类的数据成员为引用类型l一个类的数据成员可以为基本类型,也可以为引一个类的数据成员可以为基本类型,也可以为引用类型(如类的数据成员类型可以为已定

    40、义的其用类型(如类的数据成员类型可以为已定义的其它类)。它类)。l这使我们不必从头定义一个类,而是可以使用已这使我们不必从头定义一个类,而是可以使用已定义的其他类来描述类的数据成员,使类的定义定义的其他类来描述类的数据成员,使类的定义更加方便。更加方便。57class Rectangle/此类与前面定义相同,这里省略此类与前面定义相同,这里省略class WallPaintRectangle wall;double unitPrice;WallPaint()wall=new Rectangle(0,0);unitPrice=0;WallPaint(int w,int h,double p)wa

    41、ll=new Rectangle(w,h);unitPrice=p;void setUnitPrice(double p)unitPrice=p;void changeWall(int w,int h)wall.set(w,h);/修改矩形对象修改矩形对象58double computePay()return unitPrice*wall.area();void display()System.out.print(墙体彩绘业务:墙体彩绘业务:n墙体墙体);wall.display();System.out.println(此笔业务单价此笔业务单价+unitPrice);public class

    42、 Testpublic static void main(String args)WallPaint w=new WallPaint(2,3,125);w.display();System.out.println(总价格为:总价格为:+wputePay();593.8 作用域与生存期作用域与生存期l作用域:标识符的使用范围作用域:标识符的使用范围l生存期:运行时,标识符的存在区间生存期:运行时,标识符的存在区间603.8.1 作用域作用域l局部域:方法体内定义的标识符局部域:方法体内定义的标识符(补充(补充2.6)(1)方法的形参作用域为整个方法方法的形参作用域为整个方法,其在方法调用时通过参

    43、数传递初,其在方法调用时通过参数传递初始化。始化。(2)异常处理参数作用域为其后跟的异常处理参数作用域为其后跟的表示的语句块表示的语句块,其在异常参数,其在异常参数传递时初始化。传递时初始化。l类域:在类体中(方法外)定义的标识符类域:在类体中(方法外)定义的标识符为类的数据成员和成员方为类的数据成员和成员方法,其作用域为类域。法,其作用域为类域。(1)类的数据成员和成员方法标识符的作用域以类为单位,)类的数据成员和成员方法标识符的作用域以类为单位,在整个类在整个类内有效内有效(允许类的所有成员方法直接访问)。(允许类的所有成员方法直接访问)。(2)类的数据成员互相不能同名,类的成员方法也互相

    44、不能同名类的数据成员互相不能同名,类的成员方法也互相不能同名(因(因为在同一作用域)。为在同一作用域)。(3)成员方法的)成员方法的局部变量可以与类的数据成员同名,但该类的数据成局部变量可以与类的数据成员同名,但该类的数据成员在方法体内被暂时屏蔽员在方法体内被暂时屏蔽。但可以通过。但可以通过this引用来访问该类的被屏引用来访问该类的被屏蔽的数据成员。蔽的数据成员。61【例例3-12】局部引用变量与对象局部引用变量与对象class A int i;A(int i1)i=i1;void display()System.out.println(i);public class Testpublic

    45、static void main(String args)A a;A b=new A(10);b.display();a=b;a.display();623.8.2 生命期生命期1、局部变量生命期、局部变量生命期l局部变量的生命期与其作用域有关。局部变量的生命期与其作用域有关。l其在程序执行流程中,当到达作用域时变量开始使用,生命期其在程序执行流程中,当到达作用域时变量开始使用,生命期开始,超出作用域则不再使用,生命期结束。开始,超出作用域则不再使用,生命期结束。l内存栈区内存栈区2、数据成员生命期与对象生命期、数据成员生命期与对象生命期l数据成员生命期:数据成员随对象创建而分配内存,随对象销

    46、数据成员生命期:数据成员随对象创建而分配内存,随对象销毁而销毁,其生命期与对象生命期一致。毁而销毁,其生命期与对象生命期一致。l对象生命期:对象生命期:new创建时生命期开始,没有引用指向时生命期创建时生命期开始,没有引用指向时生命期结束。结束。l内存堆区:垃圾收集机制内存堆区:垃圾收集机制63class Rectangle/内容略内容略class ARectangle r;void set(Rectangle re)r=re;public class Testpublic static void main(String args)Rectangle r1=new Rectangle(1,1)

    47、;A b=new A();b.set(r1);A c=new A();c.set(r1);width:1height:1r1rbRectangle对象对象rc类类A对象对象堆区堆区栈区栈区643.9 静态数据成员与静态方法静态数据成员与静态方法l实例数据成员,实例方法实例数据成员,实例方法l类数据成员,类方法(静态数据成员,静态方法)类数据成员,类方法(静态数据成员,静态方法)653.9.1 静态数据成员静态数据成员l类的静态数据成员概念类的静态数据成员概念l数据成员属于类,而不属于任何特定的对象,由类数据成员属于类,而不属于任何特定的对象,由类的所有对象共享。的所有对象共享。类:类:Stud

    48、ent属性:属性:学号,姓名,成绩学号,姓名,成绩学生数学生数方法:显示学生信方法:显示学生信息息对象:对象:aaa“001”,“aaa”,89对象:对象:bbb“002”,“bbb”,78661、类的静态数据成员声明、类的静态数据成员声明l用用static修饰符修饰类的数据成员修饰符修饰类的数据成员2、类的静态数据成员访问、类的静态数据成员访问l类静态数据成员可类静态数据成员可通过类名直接访问通过类名直接访问,也可以,也可以通过对象访问,通过对象访问,在类的方法中直接访问在类的方法中直接访问。l注意:类的静态数据成员值被所有对象共享,任何对象都可以注意:类的静态数据成员值被所有对象共享,任何

    49、对象都可以访问类的静态数据成员,但要注意,它们使用的是同一个数据,访问类的静态数据成员,但要注意,它们使用的是同一个数据,操作的是同一块内存。无论哪个对象修改了它,对其它对象来操作的是同一块内存。无论哪个对象修改了它,对其它对象来说,它也已经变了。说,它也已经变了。67【例例3-14】类的静态数据成员访问类的静态数据成员访问class Astatic int i;void change(int i1)i=i1;public class Testpublic static void main(String args)A.i=10;A a=new A();A b=new A();System.ou

    50、t.println(A.i+,+a.i+,+b.i);a.change(40);System.out.println(A.i+,+a.i+,+b.i);b.i+=10;System.out.println(A.i+,+a.i+,+b.i);683、静态数据成员的初始化、静态数据成员的初始化l默认初始值,声明时直接初始化,静态初始化器。默认初始值,声明时直接初始化,静态初始化器。l静态初始化器:静态初始化器:Java允许通过静态初始化器初始化静允许通过静态初始化器初始化静态数据成员。静态初始化器语法:态数据成员。静态初始化器语法:class Astatic int i;static int j=

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:类与对象精选课件.ppt
    链接地址:https://www.163wenku.com/p-3282369.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库