![Java程序设计-第4章课件_第1页](http://file4.renrendoc.com/view/ca374d9bc9573c42c2b663d9a6453c0f/ca374d9bc9573c42c2b663d9a6453c0f1.gif)
![Java程序设计-第4章课件_第2页](http://file4.renrendoc.com/view/ca374d9bc9573c42c2b663d9a6453c0f/ca374d9bc9573c42c2b663d9a6453c0f2.gif)
![Java程序设计-第4章课件_第3页](http://file4.renrendoc.com/view/ca374d9bc9573c42c2b663d9a6453c0f/ca374d9bc9573c42c2b663d9a6453c0f3.gif)
![Java程序设计-第4章课件_第4页](http://file4.renrendoc.com/view/ca374d9bc9573c42c2b663d9a6453c0f/ca374d9bc9573c42c2b663d9a6453c0f4.gif)
![Java程序设计-第4章课件_第5页](http://file4.renrendoc.com/view/ca374d9bc9573c42c2b663d9a6453c0f/ca374d9bc9573c42c2b663d9a6453c0f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章面向对象(上)
第四章面向对象(上)1什么是抽象类与对象及其关系类中定义的属性(域)与方法(操作)对象构造方法类成员属性和方法的其它修饰符包(Package)
主要内容什么是抽象主要内容2什么是抽象什么是抽象3抽象的定义抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。动物经过人类抽象用一个叫”动物”的类来概括抽象的定义抽象(abstraction)是从被研究对象中舍弃4类与对象及其关系
类与对象及其关系5类与对象及其关系对象是对客观事物的抽象。类是对对象的抽象,在语言中是一种抽象的数据类型。类的定义在Java中可简述为
class类名{}它们的关系是,对象是类的实例,类是对象的模板。
类与对象及其关系对象是对客观事物的抽象。6类中定义的属性与方法
类中定义的属性与方法7类中定义的属性(域)与方法(操作)类和对象都有属性和操作,属性是事物静态特征的抽象,操作是事物动态特征的抽象。如【例4.1】classFighterPlane{Stringname;intmissileNum;voidfire(){if(missileNum>0){missileNum-=1;System.out.println(“nowfireamissile!”);}else{System.out.println(“Nomissileleft!”);}}}类的属性或称为“域”类的方法类中定义的属性(域)与方法(操作)类和对象都有属性和操作,8类中的域变量和方法存在以下关系类中定义的域变量可以被类中所有的方法所访问。方法中的形式参数和定义的局部变量的作用域仅限于方法,局部变量在使用前必须进行赋值初始化。如果局部变量和类中的属性变量重名,则在方法中对同名变量改变的是局部变量。类中定义的方法可以进行递归调用【例4.2】类中的域变量和方法存在以下关系类中定义的域变量可以被类中所有9Java的类一个Java类形式上包含两个部分:类首说明类体
Java的类一个Java类形式上包含两个部分:10类首说明
类首说明的形式如下:
[修饰符]class类名[extends超类名][implements接口名列表]类的修饰符有private、public、abstract
、final。一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序之分,可以任意的顺序排列它们。注意:
abstract和final不能同时作为一个类的修饰符。private(私有):修饰的类只能被同一包名中的类访问,这是Java默认方式;public(公共):修饰的类能被所有的类访问;abstract(抽象):修饰的类不能被实例化,它包含有未实现的方法。final(最终):修饰的类不能被继承,即不能有子类。类名是所创建的类的名字,类名可以是任意的Java标识符,根据Java命名的约定,类名的每个有意义的单词的首字母要大写,其余字母小写。extends(继承):保留字用来表明新创建的类继承哪个类,被继承的类称为此类的超类。extends后面只能跟一个超类名称。implements(实现):用来表明这个类实现了哪些接口,接口名可以有多个。
类首说明类首说明的形式如下:11类体
类体中定义了该类所有的成员变量和该类所支持的方法,其形式说明如下:类体{[成员变量说明][构造方法说明][静态初始化说明][方法说明]}类体由成员变量说明、构造方法说明、静态初始化说明和方法说明构成,它们都是可选的。类体中的这四种说明没有先后顺序之分,但是为了类的可读性,建议按照上面出现的顺序说明。类体类体中定义了该类所有的成员变量和该类所支持的方法,其形12成员变量说明及其使用1.成员变量说明成员变量的说明类似于方法的局部变量说明,所不同的是,成员变量定义在类中,是类成员的一部分,整个类都可以访问它。Java中成员变量说明形式如下:[修饰符]成员变量类型成员变量名列表;
成员变量的修饰符有以下几种:缺省访问修饰符、public、protected、private、final、static、transient和volatile。成员变量说明及其使用1.成员变量说明13(1)缺省访问修饰符
缺省访问修饰符的成员变量可以被同一包(package)中的任何类访问。(2)public(公共)
public修饰的成员变量可以被项目文件中的任何方法所访问。由于public成员变量不受限制,这易使类的对象引起不希望的修改,建议成员变量尽量不要使用public修饰符。(3)protected(受保护)
protected修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问它。(4)private(私有)
private修饰的成员变量只能在同一个类中使用。这种方式通常是最为安全的。(5)static(静态):(类变量)
static修饰的成员变量又称为类变量。不加static修饰的成员变量又叫对象变量。对象变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类的所有对象共享,它的值不因类的对象不同而不同。(6)final(最终):(常量)final修饰的成员变量叫最终成员变量。一开始创建该变量时将其设定了一个值,在以后程序的运行过程当中,变量的值将一直保持这个值不变。最终变量又称为常量。Java中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因为常量在说明以后就不能改变其值,所以常量必须要使用变量初始化来赋初值。无论是实例变量,还是类变量,都可以被说明成常量。final修饰符和static修饰符并不冲突。成员变量类型可以是基本类型或类。成员变量名使用符合Java规定的标识符来表示。(1)缺省访问修饰符14成员变量使用
类的成员变量在定义它的类内部,直接通过成员变量名来访问。如从类的外部访问,类变量和类对象变量的使用方法是不同。使用类变量的格式如下:
类名.类变量名由此可见,访问类变量与类的对象构造和对象都无关。访问类对象变量的格式如下:类对象名.类对象变量名由此可见,要使用对象变量首先要构造对象,获得类对象名。类对象名即对应的类变量名。成员变量使用类的成员变量在定义它的类内部,直接通过成员变量15例4-1成员变量的访问classPoint{finalstaticPointorigin=newPoint(0,0);//定义一个类变量,常量,origin为坐标原点intx;inty;Point(intx,inty){thisx=x;this.y=y;}}publicclassUsingStatic{publicstaticvoidmain(Stringargs[]){Pointp1=Point(10,20);//构造类Point的对象p1Pointp2=Point(310,120);System.out.println(″类Point中的类变量:″);System.out.println(″(″+Point.origin.x+″,″+Point.origin.y+″)″);//访问类变量(类名.类变量名)
System.out.println(″类Point中的类实例变量:″);System.out.println(″(″+p1.x+″,″+p1..y+″)″);//访问类对象变量x、y,p1是类对象名(类对象名.类对象变量名)}}例4-1成员变量的访问16迪米特法则LawofDemeter1987,NortheasternUniversity火星登陆软件,木星欧罗巴卫星轨道飞船软件系统Don’ttalktostrangers迪米特法则LawofDemeter17对象对象18对象的产生NEW类对象对象的产生使用的代码:newFighterPlane();对象的声明使用的代码:FighterPlanefp;对象的产生NEW类对象对象的产生使用的代码:new19NEW类对象可以声明后立即赋予对象:FighterPlanefp=newFighterPlane()NEW类对象可以声明后立即赋予对象:FighterPlane20对象内存空间分布当“FighterPlanefp=newFighterPlane()”处于某个方法中时:对象内存空间分布当“FighterPlanefp=n21对象作为参数的特点普通数据类型作为参数传递是值传递,【例4.3】。对象是引用传递。a对象s对象as【例4.4】【例4.5】对象作为参数的特点普通数据类型作为参数传递是值传递,【例422对象数组MyClass[]mc=newMyClass[10];数组对象特点及常用方法具有对象引用的特点,例【4.6】属性length的用法,例【4.7】对象数组MyClass[]mc=newMyClas23构造方法构造方法24构造方法的含义,【例4.8】构造方法的特征,【例4.9】、【4.10】构造方法的注意事项finalize方法与垃圾回收
什么是垃圾对象?垃圾对象何时回收?垃圾对象回收时调用finalize方法。构造方法的含义,【例4.8】构造方法的特征,【例4.9】、25构造方法说明
每当由类构造对象时都要调用该类特定的构造方法,在Java中,每个类都至少有一个构造方法。构造方法可以确保用户正确地构造类的对象,同时,构造方法也会对对象作初始化工作。构造方法说明形式如下:
[构造方法修饰符]方法名([形式参数列表])[throws异常列表]方法体构造方法修饰符与一般方法修饰符相同,读者参见4.3.3小节。
构造方法不能像一般的方法那样被直接调用,它是在构造类的实例的时候被Java编译器自动调用的。当我们构造一个类的实例的时候,编译器主要完成以下三件事情:(1)为对象分配内存空间;(2)初始化对象中的实例变量的值,初始值可以是缺省值,或者变量按指定的值初始化;(3)调用对象的构造方法。一个类的构造方法可以有多个,它们都具有相同的方法名,即类名。编译器根据参数的类型来决定调用哪个构造方法。构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。构造方法说明每当由类构造对象时都要调用该类特定的构造方法,26缺省的构造方法
如果类的定义没有编制构造方法,Java语言会自动为用户提供。这个由Java自动提供的构造方法就是所谓的缺省构造方法。缺省的构造方法确保每个Java类都至少有一个构造方法,该方法应符合类的定义。例如在例4-1的类Point中,如果我们没有定义构造方法,则Java自动提供了一个缺省的构造方法,如下:缺省的构造方法:publicPoint(){};//对象成员变量的初值按Java规定
缺省的构造方法如果类的定义没有编制构造方法,Java语言会27带参数的构造方法
带有参数的构造方法能够实现这样的功能:当构造一个新对象时,类构造方法可以按需要将一些指定的参数传递给构造方法。如:publicPoint(intx,inty){this.x=x;this.y=y;}带参数的构造方法带有参数的构造方法能够实现这样的功能:当构28类成员属性和方法的非访问修饰符类成员属性和方法的非访问修饰符29方法说明
在Java中,方法总是Java类的一个组成部分。通过类的方法,改变对象的状态。方法说明的格式如下:方法首部说明方法体方法说明分为方法首部说明和方法体两部分。方法说明在Java中,方法总是Java类的一个组成部分。通30方法修饰符包括以下几种:public修饰的方法可以由其他类访问;protected修饰的方法只能由继承关系的类访问;private修饰的方法只能由说明该方法的类访问;static修饰的方法为静态方法,又叫类方法;无static修饰的方法为对象方法。类方法是该类的所有对象共享的方法。abstract修饰的方法为抽象方法,无其方法体;final修饰的方法为最终方法,不能由子类改变;synchronized(同步)修饰的方法执行之前给方法设置同步机制,实现线程同步;native修饰的方法为本地方法,即方法实现与本机系统有关。方法修饰符包括以下几种:31方法名是Java中任意的标识符。按照命名的约定,方法名应该是有意义的动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。返回值类型可以是任意的Java类型,甚至可以是定义此方法的类。如果方法没有返回值,则用void表示。形式参数列表是可选的。如果方法没有形式参数,就用一对小括号“()”表示。形式参数列表的形式如下:(类型形参名,类型形参名,……)throws异常列表规定了在方法执行中可能导致的异常。第5章会详细介绍。方法名是Java中任意的标识符。按照命名的约定,方法名应该是324.3.3.2方法体方法体是实现这个方法的代码段,它由“{”和“}”括起来的语句序列构成。方法体也可以是一个分号“;”,表示无方法体,该类没有实现。当且仅当方法的修饰符中有abstract或native时,方法才无方法体。4.3.3.2方法体33方法的调用类方法调用形式如下:类名.类静态方法名(实参列表)对象方法调用形式如下:类对象名.类非静态方法名(实参列表)前面的例子中经常使用到类方法,应用程序中的主方法main就是类方法。类方法和类变量一样,都是对整个类而言的,而不是针对类的对象。一些通用的、公用型的方法不能直接作用在类的对象,因此常常被作为类方法实现。Java类库中Math类,其中多数的数学运算的操作都被定义成静态方法。因此,一些通用的、公用型的方法可以使用类方法把它们放在合适的类中,从而很好地将它们组织起来。方法的调用类方法调用形式如下:34关于类方法的使用,有如下一些限制:(1)在类方法中不能引用对象变量。(2)在类方法中不能使用super、this关键字(super、this介绍见后)。(3)类方法不能调用类中的对象方法。如果违反这些限制,你的程序就会导致编译错误。与类方法相比,对象方法几乎没有什么限制:(1)对象方法可以引用对象变量(这是显然的),也可以引用类变量(甚至一个对象变量都不引用)。(2)对象方法中可以使用supper、this关键字。(3)对象方法中可以调用类方法。如果包含类方法的类被继承,那么其子类中既可以使用带有超类名的限定名来访问该类方法,也可以使用子类名的限定名来访问该类方法。关于类方法的使用,有如下一些限制:35
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球风电用工业碳刷行业调研及趋势分析报告
- 2025-2030全球服装金属探测器行业调研及趋势分析报告
- 2025年全球及中国高性能航空涂料行业头部企业市场占有率及排名调研报告
- 2025年全球及中国眼科手术剪行业头部企业市场占有率及排名调研报告
- 2025公路工程进度、计量、合同管理监理内容
- 餐桌茶几家具买卖合同
- 年货物运输合同范本
- 2025合同模板合伙协议范本
- 大米购销的合同
- 物联网系统定制与开发合同
- 确定项目干系人(表格)
- 渠道管理就这样做
- 大客户销售这样说这样做
- 精装修样板房房屋使用说明
- 乔迁新居结婚典礼主持词
- 小学四年级数学竞赛试题(附答案)
- 鲁科版高中化学必修2全册教案
- 《病理学基础》知识考核试题题库与答案
- 人口分布 高一地理下学期人教版 必修第二册
- 四年级上册英语试题-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宫内膜异位症诊疗指南
评论
0/150
提交评论