《面向对象特性》PPT课件.ppt
《《面向对象特性》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《面向对象特性》PPT课件.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4Java面向对象特性面向对象特性4-2Copyright 山西大学商务学院 2009-2010.All rights reserved.目标目标熟悉类的概念,以及用对象对类进行实例化的概念。熟悉类的概念,以及用对象对类进行实例化的概念。学会如何在学会如何在Java中定义类。中定义类。学会在学会在Java中定义并使用方法(对象的动作)。中定义并使用方法(对象的动作)。学会在学会在Java中创建对象。中创建对象。学习信息隐藏与封装的相关知识。学习信息隐藏与封装的相关知识。了解面向对象的程序设计。了解面向对象的程序设计。4-3Copyright 山西大学商务学院 2009-2010.All rig
2、hts reserved.抽象数据类型抽象数据类型绝大多数程序设计语言都预定义了一些基本数据类型,并相应绝大多数程序设计语言都预定义了一些基本数据类型,并相应定义了对那些类型的实例执行的操作。定义了对那些类型的实例执行的操作。4-4Copyright 山西大学商务学院 2009-2010.All rights reserved.概述概述比如,对整型、实型等数值类型,有比如,对整型、实型等数值类型,有加、减、乘、除加、减、乘、除等操作,等操作,对逻辑类型,有对逻辑类型,有逻辑与、逻辑或、逻辑非逻辑与、逻辑或、逻辑非等操作。等操作。对对于于用用户户自自定定义义的的复复合合数数据据类类型型,需需要要
3、由由程程序序员员自自己己定定义义一一些些方法,对该类型的实例进行所需的操作。方法,对该类型的实例进行所需的操作。4-5Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型对象是一种程序构造,有与之相关的数据(信息),并可对象是一种程序构造,有与之相关的数据(信息),并可以执行某些动作。程序运行时,对象之间会进行交互,以以执行某些动作。程序运行时,对象之间会进行交互,以实现程序设计需要完成的任务。实现程序设计需要完成的任务。可以用对象来表示现实世界中的各种对象,比如汽车、房可以用对象来表示现实世界中的各种对象,比如汽车、房屋、
4、雇员记录。屋、雇员记录。类是指一种或一类对象,同一个类的所有对象都具有相同类是指一种或一类对象,同一个类的所有对象都具有相同类型的数据和行为。类型的数据和行为。类和对象是类和对象是Java程序的基本组成要素。程序的基本组成要素。4-6Copyright 山西大学商务学院 2009-2010.All rights reserved.类类 类是是现实世界某些世界某些对象的共同特征象的共同特征(属性和操作属性和操作)的表示,的表示,对象是象是类的的实例。例。类的属性的属性:就是就是类的静的静态属性的属性的简称,指称,指类内包含的各内包含的各项数据,如数据,如变量或其他量或其他类的的对象;象;类的服的
5、服务:则被称被称为成成员函数或方法。函数或方法。4-7Copyright 山西大学商务学院 2009-2010.All rights reserved.类的基本定义类的基本定义修修饰符符 class 类名名 extends 父父类 implements接口名接口名 类成成员变量声明量声明 类方法声明方法声明4-8Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-class-classclass关关键字,在它的后面,字,在它的后面,应跟随新数据跟随新数据类型的名称。(注型的名称。(注意不要把意不要把class写成写成Class)。
6、)。父父类名跟在名跟在extends关关键字后面,用来字后面,用来说明当前明当前类是哪个已是哪个已经存在存在类的子的子类,存在,存在继承关系。承关系。继承是承是类与与类之之间的一种非的一种非常重要的关系。常重要的关系。4-9Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-类的修饰符类的修饰符“public”(公共)公共)意味着后意味着后续的定的定义任何人均可使任何人均可使用。用。“private”(私有)私有)意味着除您自己、意味着除您自己、类型的型的创建者建者以及那个以及那个类型的内部函数成型的内部函数成员,其他任何人都不能
7、,其他任何人都不能访问后后续的定的定义信息。信息。“protected”(受保受保护的)的)与与“private”相似,只是相似,只是一个一个继承的承的类可可访问受保受保护的成的成员,但不能,但不能访问私有成私有成员。“friendly”(友好的)友好的)若某若某样东西是西是“友好的友好的”,意,意味着它只能在味着它只能在这个包装的范个包装的范围内使用(所以内使用(所以这一一访问级别有有时也叫作也叫作“包装包装访问”)。)。“4-10Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类头关于类头-接口名接口名接口名跟在接口名跟在impleme
8、nts关关键字后面,用来字后面,用来说明当前明当前类中中实现了哪个接口定了哪个接口定义的功能和方法。接口是的功能和方法。接口是Java语言用言用来来实现多重多重继承的一种特殊机制,我承的一种特殊机制,我们将在后面将在后面详细介介绍它的使用方法。它的使用方法。4-11Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于类体类体的定体的定义要包括要包括类的具体内容,包括的具体内容,包括类的属性与方法。的属性与方法。class4-12Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于
9、类体-类的属性类的属性Java中声明中声明类属性属性为简单变量的量的语法如下:法如下:修修饰符符变量量类型型变量名量名=变量初量初值;变量量类型和型和变量名是声明一个量名是声明一个变量必不可少的部分;量必不可少的部分;变量的量的类型是型是简单数据数据类型,如型,如int、double等。等。4-13Copyright 山西大学商务学院 2009-2010.All rights reserved.Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数列表参数列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声
10、明;语句序列;语句序列;关于类体关于类体-类的方法类的方法类中定中定义的方法通常起到两种作用:一是的方法通常起到两种作用:一是围绕着着类的属性的属性进行各种操作;二是与其他的行各种操作;二是与其他的类或或对象象进行数据交流、消息行数据交流、消息传递等操作。等操作。4-14Copyright 山西大学商务学院 2009-2010.All rights reserved.关于类体关于类体-类的方法类的方法Java语言中定言中定义的方法有两的方法有两类:一一类是需要程序是需要程序书写写专门的的调用命令来用命令来调用的方法,称用的方法,称为程序程序调用方法,例如用方法,例如isPfime();另一另一
11、类是运行是运行过程中系程中系统自自动调用的方法,称用的方法,称为系系统方法,例方法,例如我如我们前面程序中的前面程序中的action()、paint()、init()等。等。这两两类方法的方法的定定义和使用原和使用原则有很大差异。有很大差异。注意:系注意:系统调用方法的最大特点:不需要在程序里用方法的最大特点:不需要在程序里书写写专门的的调用方法的命令用方法的命令4-15Copyright 山西大学商务学院 2009-2010.All rights reserved.用户程序自定义类用户程序自定义类Java程序程序员把注意力放在把注意力放在创建称建称为类的用的用户自定自定义类型(型(user-
12、definedtype)上,上,类也称也称为程序程序员定定义的的类型(型(programmer-definedtype),),每个每个类都都含有数据和一含有数据和一组操作数据的方法,操作数据的方法,类中的数据部分中的数据部分称称为实例例变量。量。用用户定定义类型(即型(即类)的)的实例称例称为对象。象。下面是一个简单化的下面是一个简单化的Date类。类。4-16Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicclassDateprivateintday,month,year;Date(inti,intj,intk)day=i
13、;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()返返回回每每个个月月中中不同的
14、天数不同的天数4-18Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型在在Java中中把把名名为为tomorrow的的代代码码段段叫叫做做方方法法,也也可可以以称称为成员函数。为成员函数。Java在在数数据据和和操操作作间间建建立立了了较较严严格格的的联联系系,即即把把方方法法与与数据封装在一个类中。数据封装在一个类中。4-19Copyright 山西大学商务学院 2009-2010.All rights reserved.抽象数据类型抽象数据类型Datad=newDate(20,11,1998);/已初始化的已初始化的
15、date对象对象d.tomorrow();/tomorrow()方法作用于变量方法作用于变量d要访问要访问Date类的域,可使用点操作符类的域,可使用点操作符“.”:d.day/d所指的所指的Date对象中的对象中的day域域4-20Copyright 山西大学商务学院 2009-2010.All rights reserved.定义方法定义方法在在Java中,方法定义的一般格式如下:中,方法定义的一般格式如下:()是方法名,它必须使用合法的标识符。是方法名,它必须使用合法的标识符。说明方法返回值的类型。如果方法不返回任说明方法返回值的类型。如果方法不返回任何值,它应该声明为何值,它应该声明为
16、void。Java对待返回值的要求很严对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配。格,方法返回值必须与所说明的类型相匹配。4-21Copyright 山西大学商务学院 2009-2010.All rights reserved.定义方法定义方法段可以含几个不同的修饰符。段可以含几个不同的修饰符。是传送给方法的参数表。表中各元素间以逗是传送给方法的参数表。表中各元素间以逗号分隔,每个元素由一个类型和一个标识符组成。号分隔,每个元素由一个类型和一个标识符组成。表示方法体,是要实际执行的代码段。表示方法体,是要实际执行的代码段。4-22Copyright 山西大学商务学院 2009-
17、2010.All rights reserved.示例示例1 1voidsetName(Stringname)this.name=name;StringgetAddress()returnaddress;4-23Copyright 山西大学商务学院 2009-2010.All rights reserved.按值传送按值传送JavaJava只只“按值按值”传送自变量,即方法调用不会改变自变量的值。传送自变量,即方法调用不会改变自变量的值。当当对对象象实实例例作作为为自自变变量量传传送送给给方方法法时时,自自变变量量的的值值是是对对对对象象的的引用,也就是说,传送给方法的是引用值。引用,也就是说
18、,传送给方法的是引用值。在在方方法法内内,这这个个引引用用值值是是不不会会被被改改变变的的,但但可可以以修修改改该该引引用用指指向向的的对对象象内内容容。当当从从方方法法中中退退出出时时,所所修修改改的的对对象象内内容容可可以以保保留下来。留下来。4-24Copyright 山西大学商务学院 2009-2010.All rights reserved.程序程序3 3publicclassPassTestfloatptValue;publicstaticvoidmain(Stringargs)Stringstr;intval;PassTestpt=newPassTest();val=11;/给整
19、型量给整型量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(St
20、rvalueis:+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)
21、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.示例示例publicclassDatepriva
22、teintday,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+
23、/+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)Datem
24、ydate=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 ri
25、ghts reserved.说明说明如如果果类类的的数数据据成成员员没没有有明明确确地地提提供供给给使使用用者者访访问问,就就是是说说它它不不是公有的,则类的使用者必须通过方法来访问成员变量。是公有的,则类的使用者必须通过方法来访问成员变量。4-34Copyright 山西大学商务学院 2009-2010.All rights reserved.示例示例publicvoidsetDay(inttargetDay)if(targetDaythis.daysInMonth()System.err.println(invalidday+targetDay);elsethis.day=targetDa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象特性 面向 对象 特性 PPT 课件
限制150内