第三章抽象封装和类.ppt
《第三章抽象封装和类.ppt》由会员分享,可在线阅读,更多相关《第三章抽象封装和类.ppt(74页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第三章第三章抽象、封装和类抽象、封装和类重点掌握:重点掌握:抽象与封装抽象与封装用户自定义类和对象用户自定义类和对象 Java Java 类库概述类库概述4/23/202313.13.1面向过程到面向对象的转变面向过程到面向对象的转变3.2面向对象的基本概念面向对象的基本概念3.3类类3.4类的修饰和它的类的修饰和它的“推广空间推广空间”3.5数据成员数据成员3.6方法方法第三章第三章抽象、封装和类抽象、封装和类4/23/202323.13.1面向过程到面向对象的转变面向过程到面向对象的转变使用面向过程使用面向过程描述一件事描述一件事青椒炒牛肉青椒炒牛肉取出青椒取出青椒500g,用刀切,用刀切
2、成成细丝细丝,过过油油取出牛肉取出牛肉300g,切丁,切丁,用醬油、酒、用醬油、酒、淹制淹制30分分钟钟起油起油锅锅、放入牛肉炒及青、放入牛肉炒及青椒大火快炒椒大火快炒1分半分半拿出太白粉、水拿出太白粉、水调调在一起,在一起,这个称为这个称为芡汁。芡汁。將芡汁倒入將芡汁倒入锅中锅中搅拌搅拌,会会产产生生粘粘稠稠现现象象这这叫芶芡叫芶芡完成。完成。使用使用面向对象面向对象描述一件事描述一件事青椒炒牛肉青椒炒牛肉青椒青椒数数量量:500g处处理理:用刀切成:用刀切成细丝细丝,过过油油牛肉牛肉数数量量:300g处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹制淹制芡汁芡汁制制作作:太白粉:太白粉调
3、调上上适适量的水量的水芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡汁芡汁制制作作好,放入好,放入锅锅中快炒中快炒1分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。4/23/20233何为何为面向对象面向对象先先定义好参与这件事的物定义好参与这件事的物品有哪些品有哪些(这些这些物品物品叫做叫做“对象对象”)再定再定义这义这些物品所需的些物品所需的数量数量及及行行为为(这些数这些数量量及及行行为为叫做叫做“属属性性”与与“方法方法”)接下來可用物品接下來可用物品间间的互的互动动行为行为來描述整件事情來描述整件事情是如何是如何发发生的。生的。(这这部部分分的
4、描述的描述称为称为“主程序主程序”)青椒炒牛肉青椒炒牛肉青椒青椒数数量量:500g处处理理:用刀切成:用刀切成细丝细丝,过过油油牛肉牛肉数数量量:300g处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹制淹制芡汁芡汁制制作作:太白粉:太白粉调调上上适适量的水量的水芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡汁芡汁制制作作好,放入好,放入锅锅中快炒中快炒1分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。4/23/202343.2面向对象的基本概念面向对象的基本概念3.2.1抽象抽象什么是抽象什么是抽象抽抽象象就就是是抽抽出出事事物物的的本本质质特特性性
5、而而暂暂时时不不考考虑虑它它们们的细节。的细节。过程抽象和数据抽象过程抽象和数据抽象是常用的两种主要抽象手段。是常用的两种主要抽象手段。4/23/202353.2.2封装封装将信息隐蔽的过程称为封装将信息隐蔽的过程称为封装。4/23/20236有两方面的原因促使我们控制对成员的访问。有两方面的原因促使我们控制对成员的访问。原原因因一一:防防止止程程序序员员接接触触他他们们不不该该接接触触的的东东西西通通常常是是内内部部数数据据类类型型的的设设计计思思想想。若若只只是是为为了了解解决决特特定定的的问问题,用户只需操作接口即可,毋需明白这些信息。题,用户只需操作接口即可,毋需明白这些信息。原因二:
6、原因二:允许库设计人员修改内部结构,不用担心它会允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响对客户程序员造成什么影响。4/23/202373.2.3对象对象 对象(对象(objectobject)应是实际问题域中有意义的个应是实际问题域中有意义的个体或概念实体。体或概念实体。对象应该以某种方式与系统发生关联,即对对象应该以某种方式与系统发生关联,即对象应该与系统中其他有意义的对象进行象应该与系统中其他有意义的对象进行消息传递消息传递,并提供外部服务。并提供外部服务。4/23/20238l如何理解对象?如何理解对象?(1)(1)所有东西都是对象。可将对象想象成一种新型变量;所
7、有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。它保存着数据,但可要求它对自身进行操作。(2)(2)程序是一大堆对象的组合;通过消息传递,各对象程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。知道自己该做些什么。(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。(4)(4)每个对象都有一种类型。根据语法,每个对象都是每个对象都有一种类型。根据语法,每个对象都是某个某个“类类”的一个的一个“实例实例”。(5(5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。4/23/20
8、239对象的三个要素:对象的三个要素:1、对象的标识:对象的名字。、对象的标识:对象的名字。2、属性:对象的静态特征、属性:对象的静态特征3、方法:服务和操作。、方法:服务和操作。汽车汽车行驶,转弯,刹车行驶,转弯,刹车静态属性静态属性动动态态属属性性颜色,马力等颜色,马力等4/23/202310l对象的图形化描述:对象的图形化描述:对象:小李的手表对象:小李的手表静态特征:小李静态特征:小李指针表指针表单价单价180元元银色表带银色表带动态特征:显示当前时间动态特征:显示当前时间修改当前时间修改当前时间4/23/202311实验二实验二-Java语言基础语言基础掷骰子掷骰子6000次,次,分
9、别统计每一面出现的次数。分别统计每一面出现的次数。(int)(Math.random()*(100+1)4/23/202312limport java.util.Scanner;limport java.math.*;lpublic class AA lpublic static void main(String args)lint count=0,0,0,0,0,0;lfor(int i=0;i 6000;i+)lint result=(int)(Math.random()*6);lcountresult+;ll/print the resultlfor(int i=0;i count.le
10、ngth;i+)lSystem.out.println(i+出现 +counti+次!);lll4/23/2023133.3类类3.3.1类的类的相关概念相关概念何何谓谓“类类(Class)”类类是现实世界某些对象的共同特征是现实世界某些对象的共同特征(属性和操作属性和操作)的表示,的表示,对象对象是类的实例。是类的实例。將將所所需需属属性性和和操操作作打打包包在在一一起起,并并给给它它一一个个名名字字以以方方便便操作操作。类的属性类的属性:就是类的静态属性的简称,指类内包就是类的静态属性的简称,指类内包含的各项数据,如变量或其他类的对象;含的各项数据,如变量或其他类的对象;类的服务类的服务:
11、则被称为成员函数或方法。则被称为成员函数或方法。4/23/202314客戶客戶StringUser=“Robert”;StringPass=“1234”;Login(User,Pass)classCustomerStringUser=“Robert”;StringPass=“1234”;Login(User,Pass);属属性性方法方法4/23/202315类与类与对象的关系对象的关系类类(Class):对象的设计蓝图对象的设计蓝图对象对象(Object):根:根据类据类建造出來的建造出來的实体实体4/23/202316classCustomerStringUser=“Robert”;Stri
12、ngPass=“1234”;functionLogin(User,Pass);Robert=newCustomerPeter=newCustomerLisa=newCustomer对象对象类类4/23/202317何谓面向对象程序设计何谓面向对象程序设计把真把真实实世界的物品,以世界的物品,以class表現出來表現出來“客戶客戶”classCustomerStringUser=“Robert”;StringPass=“1234”;functionLogin(User,Pass);RobertPeterLisaRobert=newCustomerPeter=newCustomerLisa=new
13、Customer4/23/202318类的基本定义方法:类的基本定义方法:修饰符修饰符class类名类名 extends 父类父类implements 接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明4/23/2023191关于类头关于类头-class、extendsclass关键字,在它的后面,应关键字,在它的后面,应跟随新数据类型的名称。跟随新数据类型的名称。(注意不(注意不要把要把class写成写成Class)。父类名跟在父类名跟在extends关键字后关键字后面,用来说明当前类是哪个已经存面,用来说明当前类是哪个已经存在类的子类,存在继承关系。在类的子类,存在继承关系。
14、4/23/2023201关于类关于类头头-类的修饰符类的修饰符“public”(公共公共)意味着后续的定义任何人均可意味着后续的定义任何人均可使用。使用。“private”(私有私有)意味着除您自己、类型的创建意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。访问后续的定义信息。“protected”(受保护的受保护的)与与“private”相似,只相似,只是一个继承的类可访问受保护的成员,但不能访问私是一个继承的类可访问受保护的成员,但不能访问私有成员。有成员。“friendly”(友好的)友好的)若某样
15、东西是若某样东西是“友好的友好的”,意味着它只能在这个包装的范围内使用(所以这一,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作访问级别有时也叫作“包装访问包装访问”)4/23/2023211关于类头关于类头-接口名接口名接口是一种与类相似的结构,接口是一种与类相似的结构,只包含常量和抽象方法,目的只包含常量和抽象方法,目的是指明多个对象的共同行为。是指明多个对象的共同行为。接口名跟在接口名跟在implements关键字关键字后面,用来说明当前类中实现后面,用来说明当前类中实现了哪个接口定义的功能和方法。了哪个接口定义的功能和方法。4/23/2023222关于类体关于类体类类体
16、体的的定定义义要要包包括括类类的的具具体体内内容容,包包括括类类的属性与方法。的属性与方法。class 4/23/202323Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符变量类型变量类型变量名变量名=变量初值变量初值;变量类型和变量名是声明变量类型和变量名是声明一个变量必不可少的部分。一个变量必不可少的部分。2关于类体关于类体-类的属性类的属性4/23/2023242关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法方法名名(参数列表参数列表)方法体:方法体:局部变量声明;局部变
17、量声明;语句序列;语句序列;类中定义的方法通常起到两种作用:类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。二是与其他的类或对象进行数据交流、消息传递等操作。4/23/202325属性:属性:nameSalaryhireDay类:类:Employee服务:服务:getName3、类图的描述、类图的描述4/23/2023263.3.2用户程序自定义类用户程序自定义类Java程序员把注意力放在创建称为类的用户自定程序员把注意力放在创建称为类的用户自定义类型(义类型(user-definedtype)上
18、,类也称为程序员定上,类也称为程序员定义的类型(义的类型(programmer-definedtype);每个类都含有数据和一组操作数据的方法:每个类都含有数据和一组操作数据的方法:类中的数据部分称为实例变量。类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。用户定义类型(即类)的实例称为对象。4/23/202327class Employee /构造函数构造函数 public Employee(String n,double s)name=n;/职工姓名职工姓名 salary=s;/职工工资职工工资 /方法方法1 public String getName()return na
19、me;/更多的方法更多的方法/属性的实例属性的实例 private String name;private double salary;4/23/2023283.3.3创建类及类的实例对象创建类及类的实例对象 对对象象是是类类的的一一个个实实例例,类类是是同同种种对对象象的的抽抽象象,是创建对象的模板。是创建对象的模板。在在程程序序中中创创建建一一个个对对象象,将将在在内内存存中中开开辟辟一一块块空间,其中包括该对象的属性和方法。空间,其中包括该对象的属性和方法。4/23/2023291 1、声明对象、声明对象 格式:类名格式:类名 对象列表;对象列表;例:例:EmployeenewEmp1,
20、newEmp2;2、建立对象建立对象格式:格式:对象名对象名=new构造方法();构造方法();例:例:newEmp1=newEmployee(张三张三,75);newEmp2=newEmployee(“李四李四,75);或合为一步:或合为一步:EmployeenewEmp2=newEmployee(“李四李四,75);注意:注意:创建对象以某个类为模板,这个类里定义了哪创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有相些属性和方法,新建的对象就必然在内存里拥有相应的属性和方法。应的属性和方法。相对于简单数据类型,类就是用户自己定义的相对于简单数据类型,类就是
21、用户自己定义的复杂的抽象数据类型复杂的抽象数据类型;相对于简单变量,对象就是复杂的既包括数据相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。又包括方法代码的复杂数据单位。4/23/2023303、初始化对象、初始化对象构造函数构造函数 要要使使用用对对象象,首首先先必必须须构构造造它它们们,并并指指定定它它们们的的初初始状态,然后将方法应用于对象。始状态,然后将方法应用于对象。在在 Java程程 序序 设设 计计 语语 言言 中中,使使 用用 构构 造造 函函 数数(constructor)来构造新的实例。来构造新的实例。一一个个构构造造函函数数是是一一个个新新的的方方法
22、法,它它的的作作用用是是构构造造并初始化对象并初始化对象。4/23/202331构构造造函函数数是是类类的的一一种种特特殊殊方方法法,它它的的特特殊殊性性主主要要体体现在如下的几个方面:现在如下的几个方面:(1)构造函数的方法名与类名相同。)构造函数的方法名与类名相同。(2)构构造造函函数数没没有有返返回回类类型型。构构造造函函数数可可以以有有0个个、1个或多个参数。个或多个参数。(3)构构造造函函数数的的主主要要作作用用是是完完成成对对类类对对象象的的初初始始化化工作。工作。(4)构构造造函函数数不不能能由由编编程程人人员员显显式式地地直直接接调调用用,构构造函数总是和造函数总是和new运算
23、符一起被调用。运算符一起被调用。(5)在在创创建建一一个个类类的的新新对对象象的的同同时时,系系统统会会自自动动调调用该类的构造函数为新对象初始化。用该类的构造函数为新对象初始化。4/23/202332Java中中可可以以不不定定义义构构造造函函数数,此此时时系系统统会会自自动动为为该该系统生成一个默认的构造函数。系统生成一个默认的构造函数。这这个个构构造造函函数数的的名名字字与与类类名名相相同同,它它没没有有任任何何形形式参数,也不完成任何操作。式参数,也不完成任何操作。为为了了避避免免失失去去控控制制,一一般般将将构构造造函函数数的的声声明明与与创创建建分开处理。分开处理。4/23/202
24、333例例1 J Javaava中中对象的初始化对象的初始化classValuementbooleana;charb;bytec;shortd;inte;longf;floatg;doubleh;voidprint()ystem.out.println(boolean+a);System.out.println(char+b);System.out.println(byte+c);System.out.println(short+d);System.out.println(int+e);System.out.println(long+f);System.out.println(float+g)
25、;System.out.println(double+h);publicclassInitValpublicstaticvoidmain(Stringargs)Valuementvalue=newValuement();value.print();4/23/202334lboolean falselcharlbyte 0lshort 0lint 0 llong 0lfloat 0.0ldouble 0.0 4/23/202335习题习题1、抽象小李、小王等同学,构造学生类,用类、抽象小李、小王等同学,构造学生类,用类图方法描述学生类,用对象图描述小李。图方法描述学生类,用对象图描述小李。2、写
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 抽象 封装
限制150内