(1.4)--3- 面向对象编程面向对象程序设计.ppt
《(1.4)--3- 面向对象编程面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《(1.4)--3- 面向对象编程面向对象程序设计.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Chapter3 面向对象编程面向对象编程本章要点本章要点1.面向面向对象的基本特征:抽象、封装、象的基本特征:抽象、封装、继承、承、多多态2.类、成、成员变量、成量、成员方法的概念与定方法的概念与定义方法方法3.构造方法的定构造方法的定义与与对象的象的创建建4.包的定包的定义和使用和使用,带包包类的的编译和运行方法和运行方法5.方法的方法的4种参数种参数传递机制机制23学习目标学习目标1.理解抽象、封装、理解抽象、封装、继承、多承、多态的含的含义2.掌握如何定掌握如何定义类、成、成员变量、成量、成员方法和构造方法方法和构造方法3.掌握掌握java对象的象的创建方法,以及如何使用建方法,以及如
2、何使用对象象4.掌握包的定掌握包的定义、包的作用、包的作用、带包包类的的编译和运行方法,和运行方法,环境境变量量classpath的配置的配置5.掌握参数掌握参数传递的的规则6.初步掌握面向初步掌握面向对象程序的象程序的编写方法,能写方法,能够根据根据现实问题设计编写写类,定,定义类的成的成员变量和成量和成员方法方法3.13.1面向对象概述面向对象概述客客观世界是由各种各世界是由各种各样的的对象象组成的,比如一条成的,比如一条狗、一个教室、一个班狗、一个教室、一个班级、一个学生都是、一个学生都是对象。象。每种每种对象都有各自的内部状象都有各自的内部状态和运和运动规律,不同律,不同对象象间的相互
3、作用和的相互作用和联系构成了各种不同的系系构成了各种不同的系统,构成了客构成了客观世界。世界。面向面向对象象设计思想是从思想是从现实世界客世界客观存在的事物存在的事物出出发来构造来构造软件系件系统,并尽可能的运用人,并尽可能的运用人类最自最自然的思然的思维方式。方式。4对象是象是现实世界中存在的一个世界中存在的一个实实在在的在在的事物事物。把相同把相同类型的型的对象共有的特征和行象共有的特征和行为归纳起来,起来,就形成了一个就形成了一个类,类是是对象的一个模版。例如象的一个模版。例如:人是一个人是一个类,张三、李四三、李四则是具体的一个人,是具体的一个人,是人是人这个个类的一个的一个对象。象。
4、班班级是一个是一个类,高三,高三1班、高三班、高三2班都是班班都是班级类的的对象象汽汽车是一个是一个类,我家的汽,我家的汽车是汽是汽车类的一个的一个对象象51.1 1.1 类与对象类与对象面向面向对象程序象程序设计包括四个基本特征(有的包括四个基本特征(有的书称称为3个基本特征,不包括抽象个基本特征,不包括抽象):):抽象抽象封装封装继承承多多态63.23.2面向对象程序设计的基本特征面向对象程序设计的基本特征73.2.1 3.2.1 抽象抽象抽象是根据抽象是根据业务需要,把客需要,把客观世界的事物中与世界的事物中与业务相相关的特征和关的特征和行行为归纳总结出来、忽略与本出来、忽略与本业务无关
5、的无关的特征和特征和行行为,从形成,从形成类的的过程。程。例如:人具有例如:人具有身份身份证号、姓名、年号、姓名、年龄、性、性别、体重、体重等等基本信息,基本信息,还有有说话、吃、吃饭、行走、工作等、行走、工作等行行为。如果如果要开要开发一个人事管理系一个人事管理系统,除了上面,除了上面基本信息基本信息外,外,还要加上所在公司、政治面貌、所在部要加上所在公司、政治面貌、所在部门、职称、称、职务、参加工作、参加工作时间、工种等,形成一个、工种等,形成一个员工工类。要开要开发一个大学生管理系一个大学生管理系统,则出基本信息外出基本信息外还要再要再加上学号、加上学号、专业、班、班级等信息等信息,形成
6、一个学生形成一个学生类。83.2.2 封装封装封装是指把同一封装是指把同一类事物的特征和事物的特征和行行为都定都定义到一个到一个类里,里,变成成类的属性和方法。同的属性和方法。同时通通过访问控制符来定控制符来定义每个属性和方法的可每个属性和方法的可见性。性。例如,例如,一个一个圆有半径,有半径,还有有计算自己的面算自己的面积和周和周长的方法。通的方法。通过定定义一个一个圆类,将,将半径定半径定义成成圆类的属性,将的属性,将计算算圆的面的面积和周和周长的函数定的函数定义成成圆的方法,的方法,则实现了了圆类的封装。的封装。3.2.3继承继承继承是承是类之之间的一种的一种代代码重用机制。如果重用机制
7、。如果A类继承了承了B类,则A类拥有了有了B类的除了的除了私有属性和私有方法外的所有属性和方法,私有属性和私有方法外的所有属性和方法,同同时可以添加自己特有的属性和方法。可以添加自己特有的属性和方法。例如,汽例如,汽车类具有型号、具有型号、车牌、价格、牌、价格、颜色属性,具有启色属性,具有启动、挂、挂挡、刹、刹车等方等方法。公共汽法。公共汽车属于汽属于汽车的子的子类,则除了除了具有汽具有汽车类的属性和方法外,的属性和方法外,还增加了增加了票价、票价、车次、站牌等属性。次、站牌等属性。93.2.43.2.4多态多态多态是实现接口的多个类或一个父类的多多态是实现接口的多个类或一个父类的多个子类有相
8、同的方法名,但是具有不同的个子类有相同的方法名,但是具有不同的表现方式。表现方式。例如例如,动物类具有喊叫的方法,但是它的子动物类具有喊叫的方法,但是它的子类猫和子类狗的喊叫效果却不一样。类猫和子类狗的喊叫效果却不一样。3.3 java3.3 java类与对象类与对象12 3.3.1 java类的定义类的定义javajava类是组成程序的基本单位,所有代码都定义类是组成程序的基本单位,所有代码都定义在类中。在类中。JavaJava中类的定义格式如下:中类的定义格式如下:类修饰符类修饰符 class class 类名类名extends extends 父类名父类名 implements impl
9、ements 接口名列表接口名列表 成员变量定义;成员变量定义;成员方法定义;成员方法定义;133.3.1 java类的定义类的定义类修饰符类修饰符包括:包括:publicpublic、缺省、缺省、abstractabstract、finalfinalpublicpublic:允许任何其他类访问本类。一个源程序:允许任何其他类访问本类。一个源程序文件只能有一个文件只能有一个publicpublic类,而且如果源文件中有类,而且如果源文件中有一个一个publicpublic的类,则文件名必须以这个的类,则文件名必须以这个publicpublic类类的名字为文件名。的名字为文件名。缺省缺省(不写)
10、(不写):可被当前包中的其他类访问。:可被当前包中的其他类访问。abstractabstract:没有实例的抽象概念类,是它的所有:没有实例的抽象概念类,是它的所有子类的公共属性和公共方法的集合。子类的公共属性和公共方法的集合。finalfinal:不能再被扩展,:不能再被扩展,即该类即该类不能有子类。不能有子类。14 extends:表示:表示继承承(扩展)展),后面跟父,后面跟父类名,一名,一个个类只能只能继承一个父承一个父类。implements:表示:表示实现接口,后面跟接口名,可以接口,后面跟接口名,可以实现多个接口,用逗号隔开。多个接口,用逗号隔开。其中其中abstract、fin
11、al、extends、implements关关键字字以后再以后再讲。3.3.1 java类的定义类的定义成成员变量量是用来描述是用来描述类的数据的,有多种称呼,的数据的,有多种称呼,比如属性、成比如属性、成员变量、成量、成员域、域。定域、域。定义格式:格式:修修饰符列表符列表 类型型 变量名量名=值;修修饰符列表是可符列表是可选项,根据,根据实际情况定情况定义,包括,包括public、protected、private、static、final等,等,其中其中public、protected、private不能同不能同时存在。存在。类型可以是任何一种数据型可以是任何一种数据类型,包括型,包括8
12、种基本种基本类型、型、类名、接口名、数名、接口名、数组等。可以在定等。可以在定义变量量时直接直接赋值,也可以不,也可以不赋值。如果不。如果不赋值,java会会给它它一个默一个默认值。153.3.1.1成员变量的定义成员变量的定义成员变量类型默认值成员变量类型默认值byte0double0.0short0float0.0fint 0charu0000long0引用型null16各种类型成员变量的默认值各种类型成员变量的默认值 private private intint age;/age;/默认默认age=0age=0 public String name public String name;
13、/默认默认name=nullname=null private private intint height=180;height=180;成成员方法的定方法的定义格式如下:格式如下:修修饰符列表符列表 返回返回值类型型 方法名方法名(参数列表参数列表)方法体方法体17修修饰符列表是可符列表是可选项,根据,根据实际情况定情况定义,包括:包括:public、protected、private、abstract、static、final、synchronized等,等,其中其中public、protected、private不能同不能同时存在。存在。18返回返回值类型可以是任何一种数据型可以是任何一
14、种数据类型,包型,包括括8种基本种基本类型、型、类名、接口名、数名、接口名、数组等,等,也可以是也可以是void。如果如果该方法最方法最终不返回任何不返回任何结果,果,则需要需要定定义成成void。如果不是。如果不是void,则方法体最方法体最后要有后要有return语句,句,return的的值要跟方法要跟方法头中写的返回中写的返回值类型一致。型一致。19public int add(int a,int b)return a+b;add()方法会方法会计算算a和和b的和,并将和作的和,并将和作为返回返回值返返回回给调用者。用者。void print()System.out.println(本方
15、法没有回本方法没有回值);print()是一个不返回任何是一个不返回任何结果的方法,不返回果的方法,不返回结果,果,必必须把返回把返回值定定义为void。20public double sum(double score)public double sum(double score)double sum=0;double sum=0;for(int i=0;iscore.length;i+)for(int i=0;iscore.length;i+)sum=sum+scorei;sum=sum+scorei;return sum;return sum;21sum()是一个是一个计算一个算一个dou
16、ble型数型数组的和的和的方法,的方法,该方法接受一个方法接受一个double型的数型的数组score作作为参数,参数,计算算score的所有元素的的所有元素的和,然后把和作和,然后把和作为返回返回值返回返回给调用者。用者。22成成员变量和成量和成员方法的方法的顺序没有关系,可序没有关系,可以随便安排,但以随便安排,但为了了规范,一般先定范,一般先定义成成员变量,然后定量,然后定义成成员方法,各个成方法,各个成员方方法的先后法的先后顺序没有关系。序没有关系。【例【例3-1】以】以圆类Circle为例,定例,定义如下:如下:ch3下的下的Circle.java23圆类圆类CircleCircle
17、的定义的定义public class Circle/本行是本行是类声明声明/类体起始行体起始行 private double r;/属性属性,圆的半径的半径 public Circle(double r)/构造方法构造方法 this.r=r;public Circle()/无参数无参数构造方法构造方法 this.r=1;/给r赋值为1 public double getR()/成成员方法方法 return this.r;24 public void setR(double r)()/成成员方法方法 this.r=r;public double getArea()/成成员方法,方法,计算面算面积
18、 return r*r*Math.PI;public double getPerimeter()/成成员方法,方法,/该方法用来方法用来计算算圆的周的周长 return 2*r*Math.PI;/类体体结束行束行25这里里类体的起始符体的起始符“”和方法的起始和方法的起始“”都是都是放在行首,其放在行首,其实完全可以放在上一行的行尾,完全可以放在上一行的行尾,这是两种是两种编程程风格,无格,无论采用哪种都可以,采用哪种都可以,这里只里只是是为了了说明方便把明方便把“”放在行首,放在行首,实际上大部上大部分分java编程人程人员都都习惯于放在行尾。于放在行尾。其中,其中,this代表当前代表当前
19、对象,象,实际上就是将来上就是将来创建建对象后的那个象后的那个对象,象,现在在还不知道将来不知道将来创建的建的对象的名字,只能用象的名字,只能用this来代替,你也可以把它形来代替,你也可以把它形象的理解象的理解为“我我”,this.r代表代表“我的半径我的半径”,将来将来创建多个建多个对象,每个象,每个对象都有自己的半径。象都有自己的半径。26一般情况下,属性一般情况下,属性值应该定定义成成private,即私,即私有的,然后定有的,然后定义相相应的的get、set方法来方法来获取私有取私有属性的属性的值、设置私有属性的置私有属性的值。这里把里把r定定义成私有的,然后定成私有的,然后定义ge
20、tR()来来获取取属性属性r值,定,定义setR(double r)来来给属性属性r赋值为参数参数r。注意,注意,get方法一般没有参数,但有返回方法一般没有参数,但有返回值,返,返回回值类型跟属性本身的型跟属性本身的类型一型一样,set方法一定方法一定有参数,参数即有参数,参数即为要要给属性属性赋的的值。27定定义了了类以后,就相当于有了一个新的数以后,就相当于有了一个新的数据据类型,每一个型,每一个类都是一种数据都是一种数据类型。型。注意,注意,成成员变量的位置只能定量的位置只能定义变量量,不,不能写普通的能写普通的java代代码,例如在第,例如在第3行代行代码的前后都不能写下面的代的前后
21、都不能写下面的代码:System.out.println(“Hello”);也不能写也不能写:radius=radius+2;这种普通代种普通代码只能写到某个方法只能写到某个方法或或static代代码块中中283.3.2 3.3.2 构造方法构造方法构造方法是构造方法是类中的一个特殊的方法,作用中的一个特殊的方法,作用是在是在创建建对象象时给成成员变量量赋值,即完成,即完成变量的初始化。量的初始化。实际上上创建建对象象时new后后面的就是构造方法。面的就是构造方法。构造方法有构造方法有2个特征:个特征:(1)构造方法的名字跟)构造方法的名字跟类的名字完全的名字完全一一样;(2)构造方法不能有返
22、回)构造方法不能有返回值类型,型,void也不能写。也不能写。29一个一个类可以定可以定义多个构造方法,多个构造方法也可以互相多个构造方法,多个构造方法也可以互相调用。例如用。例如给上面的上面的Circle类增加一个无参数的构造方法增加一个无参数的构造方法如下:如下:public Circle()this.r=1;/给半径半径赋值为1 或者或者调用用现有的有参数的构造方法有的有参数的构造方法给半径半径赋值为1:public Circle()this(1);/调用另一个构造方法,用另一个构造方法,给半径半径赋值为1 注意:注意:(1)调用用别的构造方法跟的构造方法跟调用普通成用普通成员方法的写法
23、不方法的写法不一一样,不能使用构造方法的名字,即不能写成,不能使用构造方法的名字,即不能写成Circle(1);正正确写法是确写法是this(1)(2)如果没有写构造方法,系如果没有写构造方法,系统会自会自动添加一个无参数的构添加一个无参数的构造方法,如果已造方法,如果已经写了构造方法,写了构造方法,则不再添加无参数的构不再添加无参数的构造方法造方法303.3.3 java3.3.3 java对象的创建对象的创建Java对象的象的创建需要使用建需要使用new关关键字和字和类的构造的构造方法。方法。1对象的声明象的声明声明声明对象的格式象的格式为:类名名 对象名象名;例如声明一个例如声明一个Ci
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1.4-3- 面向对象编程面向对象程序设计 1.4 面向 对象 编程 程序设计
限制150内