欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《面向对象特性》PPT课件.ppt

    • 资源ID:72523571       资源大小:306KB        全文页数:91页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《面向对象特性》PPT课件.ppt

    4Java面向对象特性面向对象特性4-2Copyright 山西大学商务学院 2009-2010.All rights reserved.目标目标熟悉类的概念,以及用对象对类进行实例化的概念。熟悉类的概念,以及用对象对类进行实例化的概念。学会如何在学会如何在Java中定义类。中定义类。学会在学会在Java中定义并使用方法(对象的动作)。中定义并使用方法(对象的动作)。学会在学会在Java中创建对象。中创建对象。学习信息隐藏与封装的相关知识。学习信息隐藏与封装的相关知识。了解面向对象的程序设计。了解面向对象的程序设计。4-3Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型绝大多数程序设计语言都预定义了一些基本数据类型,并相应绝大多数程序设计语言都预定义了一些基本数据类型,并相应定义了对那些类型的实例执行的操作。定义了对那些类型的实例执行的操作。4-4Copyright 山西大学商务学院 2009-2010.All rights reserved.概述概述比如,对整型、实型等数值类型,有比如,对整型、实型等数值类型,有加、减、乘、除加、减、乘、除等操作,等操作,对逻辑类型,有对逻辑类型,有逻辑与、逻辑或、逻辑非逻辑与、逻辑或、逻辑非等操作。等操作。对对于于用用户户自自定定义义的的复复合合数数据据类类型型,需需要要由由程程序序员员自自己己定定义义一一些些方法,对该类型的实例进行所需的操作。方法,对该类型的实例进行所需的操作。4-5Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型对象是一种程序构造,有与之相关的数据(信息),并可对象是一种程序构造,有与之相关的数据(信息),并可以执行某些动作。程序运行时,对象之间会进行交互,以以执行某些动作。程序运行时,对象之间会进行交互,以实现程序设计需要完成的任务。实现程序设计需要完成的任务。可以用对象来表示现实世界中的各种对象,比如汽车、房可以用对象来表示现实世界中的各种对象,比如汽车、房屋、雇员记录。屋、雇员记录。类是指一种或一类对象,同一个类的所有对象都具有相同类是指一种或一类对象,同一个类的所有对象都具有相同类型的数据和行为。类型的数据和行为。类和对象是类和对象是Java程序的基本组成要素。程序的基本组成要素。4-6Copyright 山西大学商务学院 2009-2010.All rights reserved.类类 类是是现实世界某些世界某些对象的共同特征象的共同特征(属性和操作属性和操作)的表示,的表示,对象是象是类的的实例。例。类的属性的属性:就是就是类的静的静态属性的属性的简称,指称,指类内包含的各内包含的各项数据,如数据,如变量或其他量或其他类的的对象;象;类的服的服务:则被称被称为成成员函数或方法。函数或方法。4-7Copyright 山西大学商务学院 2009-2010.All rights reserved.类的基本定义类的基本定义修修饰符符 class 类名名 extends 父父类 implements接口名接口名 类成成员变量声明量声明 类方法声明方法声明4-8Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-class-classclass关关键字,在它的后面,字,在它的后面,应跟随新数据跟随新数据类型的名称。(注型的名称。(注意不要把意不要把class写成写成Class)。)。父父类名跟在名跟在extends关关键字后面,用来字后面,用来说明当前明当前类是哪个已是哪个已经存在存在类的子的子类,存在,存在继承关系。承关系。继承是承是类与与类之之间的一种非的一种非常重要的关系。常重要的关系。4-9Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-类的修饰符类的修饰符“public”(公共)公共)意味着后意味着后续的定的定义任何人均可使任何人均可使用。用。“private”(私有)私有)意味着除您自己、意味着除您自己、类型的型的创建者建者以及那个以及那个类型的内部函数成型的内部函数成员,其他任何人都不能,其他任何人都不能访问后后续的定的定义信息。信息。“protected”(受保受保护的)的)与与“private”相似,只是相似,只是一个一个继承的承的类可可访问受保受保护的成的成员,但不能,但不能访问私有成私有成员。“friendly”(友好的)友好的)若某若某样东西是西是“友好的友好的”,意,意味着它只能在味着它只能在这个包装的范个包装的范围内使用(所以内使用(所以这一一访问级别有有时也叫作也叫作“包装包装访问”)。)。“4-10Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-接口名接口名接口名跟在接口名跟在implements关关键字后面,用来字后面,用来说明当前明当前类中中实现了哪个接口定了哪个接口定义的功能和方法。接口是的功能和方法。接口是Java语言用言用来来实现多重多重继承的一种特殊机制,我承的一种特殊机制,我们将在后面将在后面详细介介绍它的使用方法。它的使用方法。4-11Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于类体类体的定体的定义要包括要包括类的具体内容,包括的具体内容,包括类的属性与方法。的属性与方法。class4-12Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于类体-类的属性类的属性Java中声明中声明类属性属性为简单变量的量的语法如下:法如下:修修饰符符变量量类型型变量名量名=变量初量初值;变量量类型和型和变量名是声明一个量名是声明一个变量必不可少的部分;量必不可少的部分;变量的量的类型是型是简单数据数据类型,如型,如int、double等。等。4-13Copyright 山西大学商务学院 2009-2010.All rights reserved.Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数列表参数列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;关于类体关于类体-类的方法类的方法类中定中定义的方法通常起到两种作用:一是的方法通常起到两种作用:一是围绕着着类的属性的属性进行各种操作;二是与其他的行各种操作;二是与其他的类或或对象象进行数据交流、消息行数据交流、消息传递等操作。等操作。4-14Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于类体-类的方法类的方法Java语言中定言中定义的方法有两的方法有两类:一一类是需要程序是需要程序书写写专门的的调用命令来用命令来调用的方法,称用的方法,称为程序程序调用方法,例如用方法,例如isPfime();另一另一类是运行是运行过程中系程中系统自自动调用的方法,称用的方法,称为系系统方法,例方法,例如我如我们前面程序中的前面程序中的action()、paint()、init()等。等。这两两类方法的方法的定定义和使用原和使用原则有很大差异。有很大差异。注意:系注意:系统调用方法的最大特点:不需要在程序里用方法的最大特点:不需要在程序里书写写专门的的调用方法的命令用方法的命令4-15Copyright 山西大学商务学院 2009-2010.All rights reserved.用户程序自定义类用户程序自定义类Java程序程序员把注意力放在把注意力放在创建称建称为类的用的用户自定自定义类型(型(user-definedtype)上,上,类也称也称为程序程序员定定义的的类型(型(programmer-definedtype),),每个每个类都都含有数据和一含有数据和一组操作数据的方法,操作数据的方法,类中的数据部分中的数据部分称称为实例例变量。量。用用户定定义类型(即型(即类)的)的实例称例称为对象。象。下面是一个简单化的下面是一个简单化的Date类。类。4-16Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassDateprivateintday,month,year;Date(inti,intj,intk)day=i;month=j;year=k;Date()day=1;month=1;year=1998;Date(Dated)day=d.day;month=d.month;year=d.year;4-17Copyright 山西大学商务学院 2009-2010.All rights reserved.publicDatetomorrow()Dated=newDate(this);d.day+;if(d.dayd.daysInMonth()d.day=1;d.month+;if(d.month12)d.month=1;d.year+;returnd;daysInMonth()返返回回每每个个月月中中不同的天数不同的天数4-18Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型在在Java中中把把名名为为tomorrow的的代代码码段段叫叫做做方方法法,也也可可以以称称为成员函数。为成员函数。Java在在数数据据和和操操作作间间建建立立了了较较严严格格的的联联系系,即即把把方方法法与与数据封装在一个类中。数据封装在一个类中。4-19Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型Datad=newDate(20,11,1998);/已初始化的已初始化的date对象对象d.tomorrow();/tomorrow()方法作用于变量方法作用于变量d要访问要访问Date类的域,可使用点操作符类的域,可使用点操作符“.”:d.day/d所指的所指的Date对象中的对象中的day域域4-20Copyright 山西大学商务学院 2009-2010.All rights reserved.定义方法定义方法在在Java中,方法定义的一般格式如下:中,方法定义的一般格式如下:()是方法名,它必须使用合法的标识符。是方法名,它必须使用合法的标识符。说明方法返回值的类型。如果方法不返回任说明方法返回值的类型。如果方法不返回任何值,它应该声明为何值,它应该声明为void。Java对待返回值的要求很严对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配。格,方法返回值必须与所说明的类型相匹配。4-21Copyright 山西大学商务学院 2009-2010.All rights reserved.定义方法定义方法段可以含几个不同的修饰符。段可以含几个不同的修饰符。是传送给方法的参数表。表中各元素间以逗是传送给方法的参数表。表中各元素间以逗号分隔,每个元素由一个类型和一个标识符组成。号分隔,每个元素由一个类型和一个标识符组成。表示方法体,是要实际执行的代码段。表示方法体,是要实际执行的代码段。4-22Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例1 1voidsetName(Stringname)this.name=name;StringgetAddress()returnaddress;4-23Copyright 山西大学商务学院 2009-2010.All rights reserved.按值传送按值传送JavaJava只只“按值按值”传送自变量,即方法调用不会改变自变量的值。传送自变量,即方法调用不会改变自变量的值。当当对对象象实实例例作作为为自自变变量量传传送送给给方方法法时时,自自变变量量的的值值是是对对对对象象的的引用,也就是说,传送给方法的是引用值。引用,也就是说,传送给方法的是引用值。在在方方法法内内,这这个个引引用用值值是是不不会会被被改改变变的的,但但可可以以修修改改该该引引用用指指向向的的对对象象内内容容。当当从从方方法法中中退退出出时时,所所修修改改的的对对象象内内容容可可以以保保留下来。留下来。4-24Copyright 山西大学商务学院 2009-2010.All rights reserved.程序程序3 3publicclassPassTestfloatptValue;publicstaticvoidmain(Stringargs)Stringstr;intval;PassTestpt=newPassTest();val=11;/给整型量给整型量val赋值赋值pt.changeInt(val);/改变改变val的值的值创建类的创建类的实例实例4-25Copyright 山西大学商务学院 2009-2010.All rights reserved./val当前的值是什么呢?打印出来看看当前的值是什么呢?打印出来看看System.out.println(Intvalueis:+val);/给字符串给字符串str赋值赋值str=newString(hello);/改变改变str的值的值pt.changeStr(str);/str当前的值是什么呢?打印出来看看当前的值是什么呢?打印出来看看System.out.println(Strvalueis:+str);/现在给现在给ptValue赋值赋值pt.ptValue=101f;/现在通过对象引用改值现在通过对象引用改值pt.changeObjValue(pt);4-26Copyright 山西大学商务学院 2009-2010.All rights reserved./当前的值是什么呢?当前的值是什么呢?System.out.println(CurrentptValueis:+pt.ptValue);/修改当前值的方法修改当前值的方法publicvoidchangeInt(intvalue)value=55;publicvoidchangeStr(Stringvalue)value=newString(different);publicvoidchangeObjValue(PassTestref)ref.ptValue=99f;4-27Copyright 山西大学商务学院 2009-2010.All rights reserved.this引用引用在在Java中中,如如果果在在类类的的成成员员方方法法中中访访问问类类的的成成员员变变量量,可以使用关键字可以使用关键字this指明要操作的对象。指明要操作的对象。4-28Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassDateprivateintday,month,year;publicvoidprintDate()System.out.println(Thecurrentdateis(dd/mm/yy):+this.day+/+this.month+/+this.year);4-29Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassDateprivateintday,month,year;publicvoidprintDate()System.out.println(Thecurrentdateis(dd/mm/yy):+day+/+month+/+year);4-30Copyright 山西大学商务学院 2009-2010.All rights reserved.数据隐藏数据隐藏在在Date类中说明类中说明day、month和和year是是private的,这意味着只能的,这意味着只能在在Date类中的方法内访问这些成员,而在类外的方法中不能访类中的方法内访问这些成员,而在类外的方法中不能访问它们。问它们。4-31Copyright 山西大学商务学院 2009-2010.All rights reserved.例例5-4:publicclassDateUserpublicstaticvoidmain(Stringargs)Datemydate=newDate();mydate.day=21;错误错误!4-32Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例Dated=newDate();d.day=32;/语法正确但语义错误语法正确但语义错误d.month=2;d.day=30;/没有进行月份的循环检查没有进行月份的循环检查d.month=d.month+1;上述赋值语句的结果使得日期对象中的域值成为非法的,或称上述赋值语句的结果使得日期对象中的域值成为非法的,或称为不一致的为不一致的。4-33Copyright 山西大学商务学院 2009-2010.All rights reserved.说明说明如如果果类类的的数数据据成成员员没没有有明明确确地地提提供供给给使使用用者者访访问问,就就是是说说它它不不是公有的,则类的使用者必须通过方法来访问成员变量。是公有的,则类的使用者必须通过方法来访问成员变量。4-34Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicvoidsetDay(inttargetDay)if(targetDaythis.daysInMonth()System.err.println(invalidday+targetDay);elsethis.day=targetDay;4-35Copyright 山西大学商务学院 2009-2010.All rights reserved.封装封装如如果果对对数数据据的的访访问问是是完完全全放放开开的的,那那么么,程程序序会会变变得得混混乱且不易控制。乱且不易控制。对对于于其其他他复复杂杂的的数数据据类类型型,类类的的使使用用者者可可能能会会疏疏忽忽对对数数据的一致性检查。据的一致性检查。4-36Copyright 山西大学商务学院 2009-2010.All rights reserved.封装封装封装是面向对象方法的一个重要原则。封装是面向对象方法的一个重要原则。它它有有两两个个基基本本涵涵义义:一一是是指指对对象象的的全全部部属属性性数数据据和和对对数数据据的的全全部部操操作作结结合合在在一一起起,形形成成一一个个统统一一体体,也也就就是是对对象象;另另一一方方面面是是指指,尽尽可可能能地地隐隐藏藏对对象象的的内内部部细细节节,只只保保留留有有限限的的对对外外接接口口,对对数数据据的的操操作作都都通通过过这这些些接接口口实实现。现。4-37Copyright 山西大学商务学院 2009-2010.All rights reserved.重载方法名重载方法名如如果果需需要要在在同同一一类类中中写写多多个个方方法法,让让它它们们对对不不同同的的变变量量进行同样的操作,就需要重载方法名。进行同样的操作,就需要重载方法名。在在JavaJava和和其其他他几几种种面面向向对对象象的的程程序序设设计计语语言言中中,允允许许对对多个方法使用同一个方法名,这就是方法名的重载。多个方法使用同一个方法名,这就是方法名的重载。当当然然,前前提提条条件件是是能能够够区区分分实实际际调调用用的的是是哪哪个个方方法法,才才可用这种方式。可用这种方式。4-38Copyright 山西大学商务学院 2009-2010.All rights reserved.重载方法名重载方法名JavaJava根根据据参参数数自自变变量量的的类类型型及及参参数数的的个个数数来来区区分分这这些些方方法。法。例如:例如:public void print(int i)public void print(int i)public void print(float f)public void print(float f)public void print(String s)public void print(String s)当调用当调用print方法时,可根据自变量的类型选中相应的一方法时,可根据自变量的类型选中相应的一个方法。个方法。4-39Copyright 山西大学商务学院 2009-2010.All rights reserved.重载方法规则一重载方法规则一调用语句的自变量列表必须足够判明要调用的是哪个方调用语句的自变量列表必须足够判明要调用的是哪个方法。自变量的类型可能要进行正常的扩展提升(如浮点法。自变量的类型可能要进行正常的扩展提升(如浮点变为双精度),但在有些情况下这会引起混淆。变为双精度),但在有些情况下这会引起混淆。4-40Copyright 山西大学商务学院 2009-2010.All rights reserved.重载方法规则二重载方法规则二方法的返回类型可能不同。如果两个同名方法只有返回方法的返回类型可能不同。如果两个同名方法只有返回类型不同,而自变量列表完全相同则是不够的,因为在类型不同,而自变量列表完全相同则是不够的,因为在方法执行前不知道能得到什么类型的返回值,因此也就方法执行前不知道能得到什么类型的返回值,因此也就不能确定要调用的是哪个方法。重载方法的参数表必须不能确定要调用的是哪个方法。重载方法的参数表必须不同,即参数个数或参数类型不同。不同,即参数个数或参数类型不同。4-41Copyright 山西大学商务学院 2009-2010.All rights reserved.对象的构造和初始化对象的构造和初始化在说明了引用后,要调用在说明了引用后,要调用newnew为新对象分配空间。为新对象分配空间。在调用在调用newnew时,既可以带有变量,也可以不带变量。时,既可以带有变量,也可以不带变量。系统根据所带参数的个数和类型,调用相应的构造方法。系统根据所带参数的个数和类型,调用相应的构造方法。4-42Copyright 山西大学商务学院 2009-2010.All rights reserved.对象的构造和初始化对象的构造和初始化调用构造方法时,步骤如下:调用构造方法时,步骤如下:(1)(1)分分配配新新对对象象的的空空间间,并并进进行行默默认认的的初初始始化化。在在JavaJava中中,这这个个过过程程是是不不可可分分的的,从从而而可可确确保保不不会会有有没没有有初初值值的的对象。对象。(2)(2)执行显式的成员初始化。执行显式的成员初始化。(3)(3)执行构造方法,构造方法是一个特殊的方法。执行构造方法,构造方法是一个特殊的方法。4-43Copyright 山西大学商务学院 2009-2010.All rights reserved.显式成员初始化显式成员初始化在在成成员员说说明明中中写写有有简简单单的的赋赋值值表表达达式式,就就可可以以在在构构造造对对象时进行显式的成员初始化。象时进行显式的成员初始化。4-44Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassInitializedprivateintx=5;privateStringname=Fred;privateDatecreated=newDate();/成员的访问方法成员的访问方法.4-45Copyright 山西大学商务学院 2009-2010.All rights reserved.构造方法构造方法显式初始化是为对象域设定初值的一种简单方法。显式初始化是为对象域设定初值的一种简单方法。因因为为设设定定的的初初值值不不具具有有变变化化性性,所所以以这这种种简简单单的的方方法法有有其局限性。其局限性。系系统统定定义义了了构构造造方方法法,同同时时允允许许程程序序员员编编写写自自己己的的构造方法完成不同的操作。构造方法完成不同的操作。4-46Copyright 山西大学商务学院 2009-2010.All rights reserved.构造方法构造方法构构造造方方法法是是特特殊殊的的类类方方法法,有有着着特特殊殊的的功功能能。它它的的名名字字与与类类名名相相同同,没没有有返返回回值值,在在创创建建对对象象实实例例时时由由newnew运运算符自动调用。算符自动调用。为为了了创创建建实实例例的的方方便便,一一个个类类可可以以有有多多个个具具有有不不同同参参数数列表的构造方法,即构造方法可以重载。列表的构造方法,即构造方法可以重载。4-47Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassXyz/成员变量成员变量intx;publicXyz()x=0;publicXyz(inti)x=i;使用参数创使用参数创建对象建对象创建对象创建对象4-48Copyright 山西大学商务学院 2009-2010.All rights reserved.构造方法构造方法因因为为构构造造方方法法的的特特殊殊性性,它它不不允允许许程程序序员员按按通通常常调调用用方方法的方式来调用。法的方式来调用。构构造造方方法法不不能能说说明明为为nativenative,abstractabstract,synchronizedsynchronized或或finalfinal,也,也不能不能从父类继承构造方法。从父类继承构造方法。4-49Copyright 山西大学商务学院 2009-2010.All rights reserved.默认构造方法默认构造方法每每个个类类都都至至少少有有一一个个构构造造方方法法。如如果果程程序序员员没没有有为为类类定定义义构构造造方方法法,系系统统会会自自动动为为该该类类生生成成一一个个默默认认的的构构造造方方法。法。默认构造方法的参数列表及方法体均为空。默认构造方法的参数列表及方法体均为空。4-50Copyright 山西大学商务学院 2009-2010.All rights reserved.默认构造方法默认构造方法如如果果程程序序员员定定义义了了一一个个或或多多个个构构造造方方法法,则则自自动动屏屏蔽蔽掉掉默认构造方法。默认构造方法。构造方法不能继承构造方法不能继承。如果程序员定义了构造方法,那么,最好包含一个参数如果程序员定义了构造方法,那么,最好包含一个参数表为空的构造方法。表为空的构造方法。4-51Copyright 山西大学商务学院 2009-2010.All rights reserved.finalize方法方法finalizefinalize方法属于方法属于ObjectObject类,它可被所有类使用。类,它可被所有类使用。如如果果对对象象实实例例不不被被任任何何变变量量引引用用时时,JavaJava会会自自动动进进行行“垃垃圾圾回收回收”,收回该实例所占用的内存空间。,收回该实例所占用的内存空间。4-52Copyright 山西大学商务学院 2009-2010.All rights reserved.finalize方法方法在在对对对对象象实实例例进进行行垃垃圾圾收收集集之之前前,JavaJava自自动动调调用用对对象象的的finalizefinalize方方法法,它它相相当当于于C+C+中中的的析析构构方方法法,用用来来释释放放对对象象所所占用的系统资源。占用的系统资源。4-53Copyright 山西大学商务学院 2009-2010.All rights reserved.finalize方法方法finalizefinalize方法的说明方式如下:方法的说明方式如下:protectedvoidfinalize()throwsThrowable4-54Copyright 山西大学商务学院 2009-2010.All rights reserved.子类子类“is a”“is a”关系关系 例例publicclassEmployeeprivateStringname;privateDatehireDate;privateDatedateOfBirth;privateStringjobTitle;privateintgrade;.4-55Copyright 山西大学商务学院 2009-2010.All rights reserved.publicclassManagerprivateStringname;privateDatehireDate;privateDatedateOfBirth;privateStringjobTitle;privateintgrade;privateStringdepartment;privateEmployeesubordinates;.4-56Copyright 山西大学商务学院 2009-2010.All rights reserved.“isa”关系关系ManagerManager类和类和EmployeeEmployee类之间存在重复部分。实际上,适用于类之间存在重复部分。实际上,适用于EmployeeEmployee的很多方法可能不经修改就会被的很多方法可能不经修改就会被ManagerManager所使用。所使用。Manager与与Employee之间存在之间存在“isa”关系,即关系,即Manager“isa”Employee。4-57Copyright 山西大学商务学院 2009-2010.All rights reserved.extends关键字关键字面面向向对对象象的的语语言言提提供供了了派派生生机机制制,它它允允许许程程序序员员用用以以前前已定义的类来定义一个新类。已定义的类来定义一个新类。新新类类称称作作子子类类,原原来来的的类类称称作作父父类类或或超超类类。两两类类中中公公共共的内容放到父类中。的内容放到父类中。JavaJava中中亦亦有有同同样样的的机机制制。在在JavaJava中中,用用关关键键字字extends表表示派生。示派生。4-58Copyright 山西大学商务学院 2009-2010.All rights reserved.例例5-10:publicclassEmployeeprivateStringname;privateDatehireDate;privateDatedateOfBirth;privateStringjobTitle;privateintgrade;.publicclassManagerextendsEmployeeprivateStringdepartment;privateEmployeesubordinates;.4-59Copyright 山西大学商务学院 2009-2010.All rights reserved.extends关键字关键字派生机制改善了程序的可维护性,增加了可靠性。对父类派生机制改善了程序的可维护性,增加了可靠性。对父类EmployeeEmployee所做的修改延伸至子类所做的修改延伸至子类ManagerManager类中,而程序员不需类中,而程序员不需做额外的工作。做额外的工作。4-60Copyright 山西大学商务学院 2009-2010.All rights reserved.单重继承单重继承如如果果一一个个类类有有父父类类,则则其其父父类类只只能能有有一一个个,JavaJava只只允允许许从一个类中扩展类。这条限制叫从一个类中扩展类。这条限制叫单重继承单重继承。为了保留多重继承的功能,为了保留多重继承的功能,JavaJava提出了提出了接口接口的概念。的概念。虽虽然然一一个个子子类类可可以以从从父父类类继继承承所所有有的的方方法法和和成成员员变变量量,但它但它不能继承构造方法不能继承构造方法。4-61Copyright 山西大学商务学院 2009-2010.All rights reserved.单重继承单重继承只有两种方法可让一个类得到一只有两种方法可让一个类得到一个构造方法,个构造方法,一种方法一种方法是自己编是自己编写一个构造方法,写一个构造方法,另一种方法另一种方法是,是,因为用户没有写构造方法,所以因为用户没有写构造方法,所以系统为类提供唯一一个默认的构系统为类提供唯一一个默认的构造方法。造方法。4-62Copyright 山西大学商务学院 2009-2010.All rights reserved.多态性多态性对象是对象是多态多态的,即它们有的,即它们有“许多形式许多形式”。在在JavaJava中中,有有一一个个很很特特殊殊的的类类,它它是是所所有有类类的的父父类类,这这就是类。就是类。例:例:publicclassEmployeeextendsObject4-63Copyright 山西大学商务学院 2009-2010.All rights reserved.方法的参量和异类集合方法的参量和异类集合1.1.方法的参量方法的参量实际中,实例和变量并不总是属于同一类。实际中,实例和变量并不总是属于同一类。例例publicTaxRatefindTaxRate(Employeee)/进行计算并返回进行计算并返回e e的税率的税率/而在应用程序类中可以写下面的语句而在应用程序类中可以写下面的语句Managerm=newManager();TaxRatet=findTaxRate(m);这是合法的,因这是合法的,因为为ManagerManager是一个是一个Employee。4-64Copyright 山西大学商务学院 2009-2010.All rights reserved.2.2.异类集合异类集合异类集合异类集合是由不同质内容组成的集合。是由不同质内容组成的集合。在在面面向向对对象象的的语语言言中中,可可以以创创建建有有公公共共祖祖先先类类的的任任何何元元素的集合。素的集合。4-65Copyright 山西大学商务学院 2009-2010.All rights reserved.instanceof运算符运算符由于类的多态性,类的变量既可以指向本类实例,又可以指向由于类的多态性,类的变量既可以指向本类实例,又可以指向其子类的实例。其子类的实例。可以通过可以通过instanceof运算符来判明一个引用到底指向哪个实例运算符来判明一个引用到底指向哪个实例。4-66Copyright 山西大学商务学院 2009-2010.All rights reserved.instanceof运算符运算符假定继承关系如下所示:假定继承关系如下所示:public class Employee extends Objectpublic class Employee extends Objectpublic class Manager extends Employeepublic class Manager extends Employeepublic class Contractor extends Employeepublic class Contractor extends Employee4-67Copyright 山西大学商务学院 2009-2010.All rights reserved.instanceof运算符运算符则类之间的层次关系如下图所示则类之间的层次关系如下图所示:ObjectEmployeeManagerContractor4-68Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicvoidmethod(Employeee)if(einstanceofManager)/经理级人士经理级人士elseif(einstan

    注意事项

    本文(《面向对象特性》PPT课件.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开