抽象封装和类.ppt
《抽象封装和类.ppt》由会员分享,可在线阅读,更多相关《抽象封装和类.ppt(74页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、抽象封装和类抽象封装和类2022-9-61现在学习的是第1页,共74页3.13.1面向过程到面向对象的转变面向过程到面向对象的转变3.2面向对象的基本概念面向对象的基本概念3.3 类类3.4 类的修饰和它的类的修饰和它的“推广空间推广空间”3.5 数据成员数据成员3.6 方法方法第三章第三章 抽象、封装和类抽象、封装和类2022-9-62现在学习的是第2页,共74页3.13.1面向过程到面向对象的转变面向过程到面向对象的转变使用面向过程使用面向过程描述一件事描述一件事青椒炒牛肉青椒炒牛肉 取出青椒取出青椒 500 g,用刀切成,用刀切成细细丝丝,过过油油 取出牛肉取出牛肉 300 g,切丁,用
2、醬,切丁,用醬油、酒、油、酒、淹制淹制 30 分分钟钟 起油起油锅锅、放入牛肉炒及青椒、放入牛肉炒及青椒大火快炒大火快炒1 分半分半 拿出太白粉、水拿出太白粉、水调调在一起,在一起,这个称为这个称为 芡汁。芡汁。將芡汁倒入將芡汁倒入锅中搅拌锅中搅拌,会产会产生生粘粘稠稠现现象象这这叫芶芡叫芶芡完成。完成。使用使用面向对象面向对象描述一件事描述一件事青椒炒牛肉青椒炒牛肉 青椒青椒 数数量量:500 g 处处理理:用刀切成:用刀切成细丝细丝,过过油油 牛肉牛肉 数数量量:300 g 处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹淹制制 芡汁芡汁 制制作作:太白粉:太白粉调调上上适适量的水量的水
3、 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡芡汁汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。2022-9-63现在学习的是第3页,共74页何为面向对象何为面向对象先定义好参与这件事的物品有先定义好参与这件事的物品有哪些哪些(这些这些物品物品叫做叫做“对象对象”)再定再定义这义这些物品所需的些物品所需的数数量量及及行行为为(这些数这些数量量及及行行为为叫做叫做“属属性性”与与“方法方法”)接下來可用物品接下來可用物品间间的互的互动行动行为为來描述整件事情是如何來描述整件事情是如何发发生的。生的。(这
4、这部部分分的描述的描述称为称为“主程序主程序”)青椒炒牛肉青椒炒牛肉 青椒青椒 数数量量:500 g 处处理理:用刀切成:用刀切成细丝细丝,过过油油 牛肉牛肉 数数量量:300 g 处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹制淹制 芡汁芡汁 制制作作:太白粉:太白粉调调上上适适量的水量的水 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡芡汁汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分分半半后后用用芡汁芡汁芶芡芶芡即可。即可。2022-9-64现在学习的是第4页,共74页3.2面向对象的基本概念面向对象的基本概念3.2.1 抽象抽象什么
5、是抽象什么是抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象过程抽象和数据抽象是常用的两种主要抽象手段。是常用的两种主要抽象手段。2022-9-65现在学习的是第5页,共74页3.2.2 封装封装将信息隐蔽的过程称为封装将信息隐蔽的过程称为封装。2022-9-66现在学习的是第6页,共74页有两方面的原因促使我们控制对成员的访问。有两方面的原因促使我们控制对成员的访问。原因一:原因一:防止程序员接触他们不该接触的东西防止程序员接触他们不该接触的东西通常是内部通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只
6、需操数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。作接口即可,毋需明白这些信息。原因二:原因二:允许库设计人员修改内部结构,不用担心它会对客户允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响程序员造成什么影响。2022-9-67现在学习的是第7页,共74页3.2.3 对象对象 对象(对象(objectobject)应是实际问题域中有意义的个体应是实际问题域中有意义的个体或概念实体。或概念实体。对象应该以某种方式与系统发生关联,即对象应该与对象应该以某种方式与系统发生关联,即对象应该与系统中其他有意义的对象进行系统中其他有意义的对象进行消息
7、传递消息传递,并提供外部服,并提供外部服务。务。2022-9-68现在学习的是第8页,共74页l如何理解对象?如何理解对象?(1)(1)所有东西都是对象。可将对象想象成一种新型变量;所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。它保存着数据,但可要求它对自身进行操作。(2)(2)程序是一大堆对象的组合;通过消息传递,各对象知道自程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。己该做些什么。(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。(4)(4)每个对象都有一种类型。根据语法,每个对象
8、都是某每个对象都有一种类型。根据语法,每个对象都是某个个“类类”的一个的一个“实例实例”。(5(5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。2022-9-69现在学习的是第9页,共74页对象的三个要素:对象的三个要素:1、对象的标识:对象的名字。、对象的标识:对象的名字。2、属性:对象的静态特征、属性:对象的静态特征3、方法:服务和操作。、方法:服务和操作。汽车汽车行驶,转弯,刹车行驶,转弯,刹车静态属性静态属性动动态态属属性性颜色,马力等颜色,马力等2022-9-610现在学习的是第10页,共74页l对象的图形化描述:对象的图形化描述:对象:小李的手表对象:小李
9、的手表静态特征:小李静态特征:小李 指针表指针表 单价单价180元元 银色表带银色表带动态特征:显示当前时间动态特征:显示当前时间 修改当前时间修改当前时间2022-9-611现在学习的是第11页,共74页实验二实验二-Java语言基础语言基础 掷骰子掷骰子6000次,次,分别统计每一面出现的次数。分别统计每一面出现的次数。(int)(Math.random()*(100+1)2022-9-612现在学习的是第12页,共74页limport java.util.Scanner;limport java.math.*;lpublic class AA lpublic static void ma
10、in(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.length;i+)lSystem.out.println(i+出现 +counti+次!);lll2022-9-613现在学习的是第13页,共74页3.3 类类 3.3.1类的相关概念类的相关概念何何谓谓“类类(Class)”类类是现实世界某些对象的共同特征是现实世界某些对象的共同特征(属性和操作
11、属性和操作)的表示,的表示,对象对象是类的实例。是类的实例。將所需將所需属性属性和和操作操作打包在一起,打包在一起,并给并给它一它一个个名字名字以方便操作以方便操作。类的属性类的属性:就是类的静态属性的简称,指类内包含的各项就是类的静态属性的简称,指类内包含的各项数据,如变量或其他类的对象;数据,如变量或其他类的对象;类的服务类的服务:则被称为成员函数或方法。则被称为成员函数或方法。2022-9-614现在学习的是第14页,共74页客戶客戶String User=“Robert”;String Pass=“1234”;Login(User,Pass)class Customer String
12、User=“Robert”;String Pass=“1234”;Login(User,Pass);属属性性方法方法2022-9-615现在学习的是第15页,共74页类与对象的关系类与对象的关系类类(Class):对象的设计蓝图对象的设计蓝图对象对象(Object):根:根据类据类建造出來的建造出來的实体实体2022-9-616现在学习的是第16页,共74页class Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);Robert=new CustomerPeter=new CustomerLi
13、sa=new Customer对象对象类类2022-9-617现在学习的是第17页,共74页何谓面向对象程序设计何谓面向对象程序设计把真把真实实世界的物品,以世界的物品,以 class 表現出來表現出來“客戶客戶”class Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);RobertPeterLisaRobert=new CustomerPeter=new CustomerLisa=new Customer2022-9-618现在学习的是第18页,共74页类的基本定义方法:类的基本定义方法:
14、修饰符修饰符class类名类名 extends 父类父类implements 接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明2022-9-619现在学习的是第19页,共74页1关于类头关于类头-class、extends class关键字,在它的后面,应跟随关键字,在它的后面,应跟随新数据类型的名称。新数据类型的名称。(注意不要把(注意不要把class写成写成Class)。父类名跟在父类名跟在extends 关键字后面,关键字后面,用来说明当前类是哪个已经存在类的子用来说明当前类是哪个已经存在类的子类,存在继承关系。类,存在继承关系。2022-9-620现在学习的是第20页,
15、共74页1关于类头关于类头-类的修饰符类的修饰符“public”(公共(公共)意味着后续的定义任何人均可使用。意味着后续的定义任何人均可使用。“private”(私有(私有)意味着除您自己、类型的创建者以及意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。的定义信息。“protected”(受保护的(受保护的)与与“private”相似,只是一个继承相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)(友好的)若某样东西是
16、若某样东西是“友好的友好的”,意味着它,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问包装访问”)2022-9-621现在学习的是第21页,共74页1关于类头关于类头-接口名接口名接口是一种与类相似的结构,只接口是一种与类相似的结构,只包含常量和抽象方法,目的是指包含常量和抽象方法,目的是指明多个对象的共同行为。接口名明多个对象的共同行为。接口名跟在跟在implements关键字后面,用关键字后面,用来说明当前类中实现了哪个接口来说明当前类中实现了哪个接口定义的功能和方法。定义的功能和方法。2022-9-622现在
17、学习的是第22页,共74页2关于类体关于类体 类体的定义要包括类的具体内容,包括类类体的定义要包括类的具体内容,包括类的属性与方法。的属性与方法。class 2022-9-623现在学习的是第23页,共74页Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;变量类型和变量名是声明一个变量类型和变量名是声明一个变量必不可少的部分。变量必不可少的部分。2关于类体关于类体-类的属性类的属性2022-9-624现在学习的是第24页,共74页2关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方
18、法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参参数列表数列表)方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类中定义的方法通常起到两种作用:类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。二是与其他的类或对象进行数据交流、消息传递等操作。2022-9-625现在学习的是第25页,共74页 属性:属性:name Salary hireDay类:类:Employee服务:服务:getName3、类图的描述、类图的描述2022-9-626现在学习的是第26页,共74
19、页3.3.2 用户程序自定义类用户程序自定义类 Java程序员把注意力放在创建称为类的用户自定义类型(程序员把注意力放在创建称为类的用户自定义类型(user-defined type)上,类也称为程序员定义的类型()上,类也称为程序员定义的类型(programmer-defined type);每个类都含有数据和一组操作数据的方法:每个类都含有数据和一组操作数据的方法:类中的数据部分称为实例变量。类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。用户定义类型(即类)的实例称为对象。2022-9-627现在学习的是第27页,共74页class Employee /构造函数构造函数
20、public Employee(String n,double s)name=n;/职工姓名职工姓名 salary=s;/职工工资职工工资 /方法方法1 public String getName()return name;/更多的方法更多的方法/属性的实例属性的实例 private String name;private double salary;2022-9-628现在学习的是第28页,共74页3.3.3 创建类及类的实例对象创建类及类的实例对象 对象是类的一个实例,类是同种对象的抽象,是创建对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。对象的模板。在程序中创建一个对象,将在
21、内存中开辟一块空间,其在程序中创建一个对象,将在内存中开辟一块空间,其中包括该对象的属性和方法。中包括该对象的属性和方法。2022-9-629现在学习的是第29页,共74页1 1、声明对象、声明对象 格式:类名格式:类名 对象列表;对象列表;例:例:Employee newEmp1,newEmp2;2、建立对象、建立对象 格式:格式:对象名对象名=new 构造方法();构造方法();例:例:newEmp1=new Employee(张三张三,75);newEmp2 =new Employee(“李四李四,75);或合为一步:或合为一步:Employee newEmp2 =new Employe
22、e(“李四李四,75);注意:注意:创建对象以某个类为模板,这个类里定义了哪些属性创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有相应的属性和方和方法,新建的对象就必然在内存里拥有相应的属性和方法。法。相对于简单数据类型,类就是用户自己定义的复杂的相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型抽象数据类型;相对于简单变量,对象就是复杂的既包括数据又包相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。括方法代码的复杂数据单位。2022-9-630现在学习的是第30页,共74页3、初始化对象、初始化对象构造函数构造函数 要使用对象,
23、首先必须构造它们,并指定它们的初始要使用对象,首先必须构造它们,并指定它们的初始状态,然后将方法应用于对象。状态,然后将方法应用于对象。在在Java程序设计语言中,使用构造函数(程序设计语言中,使用构造函数(constructor)来构造新的实例。)来构造新的实例。一个构造函数是一个新的方法,一个构造函数是一个新的方法,它的作用是构造并它的作用是构造并初始化对象初始化对象。2022-9-631现在学习的是第31页,共74页构造函数是类的一种特殊方法,它的特殊性主要体现在如构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面:下的几个方面:(1)构造函数的方法名与类名相同。)构造函数的
24、方法名与类名相同。(2)构造函数没有返回类型。)构造函数没有返回类型。构造函数可以有构造函数可以有0个、个、1个个或多个参数。或多个参数。(3)构造函数的主要作用是完成对类对象的初始化工作)构造函数的主要作用是完成对类对象的初始化工作。(4)构造函数不能由编程人员显式地直接调用,)构造函数不能由编程人员显式地直接调用,构造函数构造函数总是和总是和new运算符一起被调用。运算符一起被调用。(5)在创建一个类的新对象的同时,系统会自动调用该类的)在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。构造函数为新对象初始化。2022-9-632现在学习的是第32页,共74页 Jav
25、a中可以不定义构造函数,此时系统会自动为该系统生中可以不定义构造函数,此时系统会自动为该系统生成一个默认的构造函数。成一个默认的构造函数。这个构造函数的名字与类名相同,它没有任何形式这个构造函数的名字与类名相同,它没有任何形式参数,也不完成任何操作。参数,也不完成任何操作。为了避免失去控制,一般将构造函数的声明与创建分为了避免失去控制,一般将构造函数的声明与创建分开处理。开处理。2022-9-633现在学习的是第33页,共74页例例1 JavaJava中对象的初始化中对象的初始化class Valuement boolean a;char b;byte c;short d;int e;long
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象 封装
限制150内