第四章 类与面向对象编程.ppt
《第四章 类与面向对象编程.ppt》由会员分享,可在线阅读,更多相关《第四章 类与面向对象编程.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 类与面向对象编程类与面向对象编程n面向对象编程基础面向对象编程基础n类的编程实现类的编程实现n对象的定义与使用对象的定义与使用n重载重载n访问控制符访问控制符n其他修饰符其他修饰符目标:目标:面向对象编程思想面向对象编程思想学习重点:学习重点:类、对象、构造方类、对象、构造方法、重载法、重载 4.1 4.1 面向对象编程基础面向对象编程基础 4.1.1 4.1.1 面向对象编程的基本概念面向对象编程的基本概念 面向对象编程与传统的面向过程编程的区别面向对象编程与传统的面向过程编程的区别 面向过程编程:按照计算机的问题处理逻辑来描述和面向过程编程:按照计算机的问题处理逻辑来描述和
2、处理现实世界中的具体问题,采用结构化程序设处理现实世界中的具体问题,采用结构化程序设 计和编程方法,将复杂任务逐步分解为多个子任计和编程方法,将复杂任务逐步分解为多个子任 务,用一组函数实现任务求解。务,用一组函数实现任务求解。(动动宾结构宾结构)面向对象编程:程序的设计和编写力求符合人们的思面向对象编程:程序的设计和编写力求符合人们的思 维方式,让计算机处理模拟人们对现实世界的问维方式,让计算机处理模拟人们对现实世界的问 题求解方法,使现实世界中的事务与面向对象程题求解方法,使现实世界中的事务与面向对象程 序中的类和对象相对应。(序中的类和对象相对应。(主主谓结构)谓结构)4.1.1 4.1
3、.1 面向对象编程的基本概念面向对象编程的基本概念 1 1、对象、对象(ObjectObject):):两个层次,一一对应两个层次,一一对应-客观存在。客观存在。n现实生活中的对象:客观世界中的实体(属性和行为);现实生活中的对象:客观世界中的实体(属性和行为);n程序中的对象:变量和相关方法的集合(数据和方法);程序中的对象:变量和相关方法的集合(数据和方法);即类是对象的抽象,而对象则是类的实例化(具体化即类是对象的抽象,而对象则是类的实例化(具体化)实体对象(有共同特征)描述映射抽象抽象数据类型程序对象类 4.1.1 4.1.1 面向对象编程的基本概念面向对象编程的基本概念 2 2、类、
4、类(ClassClass)-对应现实世界的类别对应现实世界的类别n将具有共性的一类对象,抽象为将具有共性的一类对象,抽象为“类类”-概念上的意义。概念上的意义。n是一种数据类型,在是一种数据类型,在JavaJava中是一种复合中是一种复合/引用数据类型。引用数据类型。n类是创建某一类对象的模板,属于类的某个对象为类的类是创建某一类对象的模板,属于类的某个对象为类的一个实例,使用对象前需要先定义它所属的类。一个实例,使用对象前需要先定义它所属的类。n类中定义一类对象类中定义一类对象共有共有的变量和方法。的变量和方法。n类的定义可实现代码的复用。我们不用去描述每一个对类的定义可实现代码的复用。我们
5、不用去描述每一个对象象(如某辆汽车如某辆汽车),),而是通过创建类而是通过创建类(如汽车类如汽车类)的一个实的一个实例来创建类的一个对象例来创建类的一个对象,这大大减化了软件的设计。这大大减化了软件的设计。4.1.1 4.1.1 面向对象编程的基本概念面向对象编程的基本概念 3 3、成员与方法成员与方法 抽抽象象为为一一个个类类的的不不同同对对象象具具有有许许多多相相同同的的特特点点,这这些些特特点点基基本本上上可可以以分分为为两两类类:一一是是描描述述对对象象静静态态状状态态的的,这这就就是是对对象象的的属属性性/状状态态,在在程程序序设设计计中中,称称之之为为变变量量(VariableVa
6、riable)/成成员员;另另一一个个是是描描述述对对象象的的动动作作和和行行为为,这这就就是是对对象象的的方方法法(MethodMethod),方方法法决定了该类中的数据如何使用。决定了该类中的数据如何使用。例:例:“汽车汽车”的属性:颜色、重量、功率、速度等;的属性:颜色、重量、功率、速度等;方法:前进、后退、加速、减速等。方法:前进、后退、加速、减速等。汽车类示例汽车类示例 class Carclass Car int int color_numbercolor_number;int weight;int weight;void brake();void brake();void voi
7、d speedUpspeedUp();();void void slowDownslowDown();();4.1.2 4.1.2 面向对象编程的优点面向对象编程的优点 与面向过程编程相比较,面向对象编程与面向过程编程相比较,面向对象编程具有如下优点:具有如下优点:n提高了程序的可维护性提高了程序的可维护性(全局变量全局变量-不共享数据不共享数据)n可重用性高可重用性高-继承(提高效率,降低成本)继承(提高效率,降低成本)n保护数据保护数据-封装封装类比:组装电脑类比:组装电脑 4.1.3 4.1.3 对象的对象的抽象抽象 抽象是一种思维形式,就是把事物共同点抽取出抽象是一种思维形式,就是把事
8、物共同点抽取出来,以统一的方式进行概要描述的一种过程。来,以统一的方式进行概要描述的一种过程。轿轿 车车卡卡 车车公交车公交车汽车汽车对象对象类类汽车汽车火车火车轮船轮船飞机飞机对象对象交通工具交通工具类类具体化具体化/实例化实例化抽象抽象 4.1.3 4.1.3 对象的对象的抽象抽象n面向对象的编程中,系统由多个包含不同属性和方法的对面向对象的编程中,系统由多个包含不同属性和方法的对象组成,每个对象实现部分功能。(如上页交通工具)象组成,每个对象实现部分功能。(如上页交通工具)n什么是什么是抽象抽象:用面向对象的方法解决现实世界的问题时去:用面向对象的方法解决现实世界的问题时去掉物体中与问题
9、不相关的部分,形成所需要类的过程,称掉物体中与问题不相关的部分,形成所需要类的过程,称为抽象。为抽象。n采用数据抽象方法采用数据抽象方法-构建程序的类构建程序的类实体实体现实现实世界世界概念概念模型模型抽象抽象对象对象类类抽抽象象实实例例化化映射映射计算机中的实现计算机中的实现 4.1.4 4.1.4 封装封装n什么是封装什么是封装:封装是将:封装是将数据数据和对数据的和对数据的操作操作封装在一封装在一个个抽象的数据类型抽象的数据类型中,数据被保护在抽象数据类型的中,数据被保护在抽象数据类型的内部,其他对象只能通过内部,其他对象只能通过接口接口与数据进行交互。与数据进行交互。私有数据私有数据
10、方法方法 方法方法数据数据对象对象A对象对象B公有数据公有数据接口接口 4.1.4 4.1.4 封装封装n在程序中,用类将在程序中,用类将数据数据和和方法方法封装在封装在类体类体中。中。模块之间通过模块之间通过接口接口进行交互。进行交互。n封装技术的优点封装技术的优点:(1)(1)降低问题的复杂度;降低问题的复杂度;(2)(2)提高了类或模块的可重用性;提高了类或模块的可重用性;(3)(3)保护数据的完整性和安全性。保护数据的完整性和安全性。类比:计算机的主机类比:计算机的主机 4.2 4.2 类的编程实现类的编程实现 n为什么使用类为什么使用类 采用基本数据类型表示现实世界中的概念存在采用基
11、本数据类型表示现实世界中的概念存在一些局限性。例如:采用一些局限性。例如:采用intint型数据表示一个日期概型数据表示一个日期概念,需要使用念,需要使用3 3个变量:个变量:intint day day,monthmonth,year;year;如如果要表示果要表示2 2个人的生日,就要使用个人的生日,就要使用6 6个变量。个变量。而使用类就可以避免这种情况,因为类中不但而使用类就可以避免这种情况,因为类中不但有变量,还有与之相关的操作所定义的方法,将变有变量,还有与之相关的操作所定义的方法,将变量和方法放在一个类中,外部对类成员的访问都通量和方法放在一个类中,外部对类成员的访问都通过方法进
12、行,从而隐藏成员变量,保护类成员不被过方法进行,从而隐藏成员变量,保护类成员不被非法修改。非法修改。4.2.14.2.1 类定义类定义语法结构:语法结构:修饰符修饰符 class class 类名类名 extends extends 父类名父类名 implements implements 接口名接口名 /类头类头 类成员声明及初始化;类成员声明及初始化;类方法声明及方法体;类方法声明及方法体;n修饰符:说明类的性质,包括访问控制符(空或修饰符:说明类的性质,包括访问控制符(空或publicpublic)和类型说明符和类型说明符(abstractabstract抽象、抽象、finalfinal
13、最终)。最终)。n类名:用户自定,约定每个单词的首字母大写。类名:用户自定,约定每个单词的首字母大写。nextends extends 父类名:实现继承父类名:实现继承/派生派生nimplements implements 接口名:多重继承接口名:多重继承类体类体二者不能同时二者不能同时修饰一个类修饰一个类 4.2.14.2.1 类定义类定义n类类声明只是创建一个模板(或类型描述),并不会创声明只是创建一个模板(或类型描述),并不会创建一个实际的对象,只有用建一个实际的对象,只有用newnew方法创建一个该类的实方法创建一个该类的实例对象时,才具有例对象时,才具有“物理物理”的真实性。的真实性
14、。例例 BoxDemo.javaBoxDemo.java的源程序的源程序 4.2.2 4.2.2 域域/成员变量的定义成员变量的定义 1 1、什么是域、什么是域 域:类体中数据部分体现为域:类体中数据部分体现为成员变量成员变量的定义,也称为的定义,也称为域域或或 静态静态属性属性。域体现了类的状态,状态的改变由类体中。域体现了类的状态,状态的改变由类体中 的方法实现。的方法实现。注注:域必须在类体中直接定义,不能包含在方法中定义。:域必须在类体中直接定义,不能包含在方法中定义。2 2、域定义的语法、域定义的语法 修饰符修饰符 变量类型变量类型 变量名变量名 =变量初始值变量初始值 /简单变量简
15、单变量 修饰符修饰符 类名类名 对象名对象名 =new=new 类名类名 (实际参数列表实际参数列表)/对象对象 4.2.2 4.2.2 域域/成员变量的定义成员变量的定义 3 3、说明、说明n修饰符:包括访问控制符(空、修饰符:包括访问控制符(空、publicpublic、privateprivate、protectedprotected)、)、静态静态staticstatic、常量、常量finalfinal、多线程中备份、多线程中备份volatilevolatile、过渡(暂时)、过渡(暂时)transienttransient修饰符。修饰符。n修饰符为可选项,也可有两个以上的修饰符;修饰
16、符为可选项,也可有两个以上的修饰符;n若使用其他类的对象作为当前类的成员时,须保证其他类在当前若使用其他类的对象作为当前类的成员时,须保证其他类在当前类中是可见的,即它可以被当前类所引用。类中是可见的,即它可以被当前类所引用。n变量类型,可以是基本数据类型,也可以是复合数据类型。变量类型,可以是基本数据类型,也可以是复合数据类型。4.2.2 4.2.2 域域/成员变量的定义成员变量的定义n成员变量与局部变量成员变量与局部变量 成员变量:类体中定义的变量,在整个类中都可成员变量:类体中定义的变量,在整个类中都可 以使用;以使用;局部变量局部变量:在方法体中定义的变量和方法的参在方法体中定义的变量
17、和方法的参 数,在方法中有效。数,在方法中有效。例例4-1 4-1 Person.javaPerson.java的源代码的源代码 class Person String name;/域的定义 int sex;private double salary;int age;Box mybox;1 1、什么是方法、什么是方法n方法,也叫成员函数,是类的动态属性,表示类具有的功能和行为,方法,也叫成员函数,是类的动态属性,表示类具有的功能和行为,用来改变对象的状态。其他对象通过调用对象的方法获得该对象的用来改变对象的状态。其他对象通过调用对象的方法获得该对象的服务。服务。n方法只能在类的内部进行定义。按
18、照习惯方法的定义一般在域之后。方法只能在类的内部进行定义。按照习惯方法的定义一般在域之后。n方法决定该类中的数据如何使用。方法决定该类中的数据如何使用。2 2、方法定义的语法:、方法定义的语法:修饰符修饰符 返回值类型返回值类型 方法名方法名 (参数列表参数列表)/方法头方法头 局部变量声明;局部变量声明;语句序列;语句序列;/方法体方法体4.2.3 4.2.3 方法的定义方法的定义 4.2.3 4.2.3 方法的定义方法的定义 3 3、说明、说明n修饰符:包含访问控制符(空、修饰符:包含访问控制符(空、publicpublic、privateprivate、protectedprotecte
19、d)、)、静态静态staticstatic、抽象抽象abstractabstract、最终最终finalfinal、同步同步synchronizedsynchronized;n返回值的类型任意,无返回值用返回值的类型任意,无返回值用voidvoid,有则在方法体中使用有则在方法体中使用returnreturn语句;语句;n参数可有(指明类型和名称)可无,其类型任意,必须用(),参数可有(指明类型和名称)可无,其类型任意,必须用(),多个用多个用“,”分开;分开;n方法的作用:方法的作用:围绕类的成员进行各种操作;与其他的类或对象进行数据交流、围绕类的成员进行各种操作;与其他的类或对象进行数据交
20、流、消息传递等操作。消息传递等操作。例例4-2 4-2 Person.javaPerson.java的源代码的源代码class Personclass Person String name;/String name;/域的定义域的定义 int sex;int sex;private double salary;private double salary;intint age;age;String String getNamegetName()()return name;return name;void void setNamesetName(String s)(String s)nemenem
21、e=s;=s;double double getIncomegetIncome()()return salary;return salary;void void setIncomesetIncome(double d)(double d)salary=d;salary=d;在在JavaJava中对方法进中对方法进行定义时,根据方行定义时,根据方法的功能需求,要法的功能需求,要对返回值类型、参对返回值类型、参数表和方法体进行数表和方法体进行具体实现。具体实现。4.2.3 4.2.3 方法的定义方法的定义 4 4、方法的返回值、方法的返回值 JavaJava中定义方法必须说明中定义方法必须说明返回
22、值的类型返回值的类型:n没有返回值,那么在方法名前必须加没有返回值,那么在方法名前必须加voidvoid;n有返回值,方法本身也可当作一个值或表达式,可以有返回值,方法本身也可当作一个值或表达式,可以将它赋值给一个将它赋值给一个同类型同类型的变量,方法中有的变量,方法中有returnreturn语句。语句。注:注:returnreturn语句后面的表达式为返回值,且语句后面的表达式为返回值,且returnreturn语句语句 必须为方法的最后一条可执行语句。必须为方法的最后一条可执行语句。例例4-3 4-3 ReturnType.javaReturnType.java的源代码的源代码publi
23、c class public class ReturnTypeReturnType int int i,ji,j;intint mxmx()()i+;i+;j=i+;/j=i+;/return(jreturn(j*i);*i);System.out.printlnSystem.out.println(”i=”+(”i=”+i+”,ji+”,j=”+j);=”+j);return(jreturn(j*i);*i);/return /return 必须为最后一句可执行语句必须为最后一句可执行语句 voidvoid mp()mp()i=j=6;i=j=6;System.out.printlnSyst
24、em.out.println(”i=”+(”i=”+i+”,ji+”,j=”+j);=”+j);public static void main(String args)public static void main(String args)intint x;x;ReturnTypeReturnType r=new r=new ReturnTypeReturnType();();r.mpr.mp();();x=x=r.mxr.mx();();System.out.println(”xSystem.out.println(”x=”+x);=”+x);4.2.3 4.2.3 方法的定义方法的定义 5
25、 5、方法的参数、方法的参数-从外部传递信息从外部传递信息n编写方法时,需要确定参数的编写方法时,需要确定参数的数量数量和和类型类型,多个参数,多个参数用用“,”分开,在方法头定义中说明。分开,在方法头定义中说明。例例 double double computeArea(doublecomputeArea(double x,doublex,double y)y)double s;double s;s=x*y;s=x*y;return s;return s;4.2.3 4.2.3 方法的定义方法的定义n若方法的参数名与类中成员变量若方法的参数名与类中成员变量名相同名相同,则参数名将,则参数名将在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四章 类与面向对象编程 第四 面向 对象 编程
限制150内