第5章面向对象的程序设计课件.ppt
《第5章面向对象的程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第5章面向对象的程序设计课件.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 面向对象的程序设计面向对象的程序设计 u 5.1【案例【案例14】统计学生成绩】统计学生成绩1相关知识相关知识u 5.2【案例【案例15】统计学生成绩】统计学生成绩2相关知识相关知识u 5.3【案例【案例16】修饰符的能力相关知识】修饰符的能力相关知识u 5.1【案例【案例14】统计学生成绩】统计学生成绩1相关知识相关知识1声明类声明类在在Java编程语言中,类就是一块模块,对象是在其类模块上建立起来的,就编程语言中,类就是一块模块,对象是在其类模块上建立起来的,就像根据建筑图纸来建楼,同样的图纸可用来建许多楼房,而每栋楼房是它自像根据建筑图纸来建楼,同样的图纸可用来建许多楼房,而
2、每栋楼房是它自己的一个对象。可以这样说,己的一个对象。可以这样说,Java程序是由多个类构成的,而程序是由多个类构成的,而Java设计过程设计过程就是声明和应用类的过程,而类是域和相关方法的集合,其中域表明对象的就是声明和应用类的过程,而类是域和相关方法的集合,其中域表明对象的状态,方法表明对象的的行为。状态,方法表明对象的的行为。Java中的类可以分为两种情况,一种是系统声明的类,即中的类可以分为两种情况,一种是系统声明的类,即Java类库中的类,类库中的类,另一种是用户自定义的类。用户自定义类包括声明类和类中具体内容两个步另一种是用户自定义的类。用户自定义类包括声明类和类中具体内容两个步骤
3、,下面将具体介绍如何通过骤,下面将具体介绍如何通过Java语言来创建自定义类。语言来创建自定义类。在在Java语言中,声明类的一般格式如下。语言中,声明类的一般格式如下。修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口名接口名 类的变量类的变量 构造方法构造方法 类的方法类的方法其中,其中,“类名类名”、“父类名父类名”和和“接口名接口名”必须是合法的标识符,带符号必须是合法的标识符,带符号的的选项可以省略。各选项的具体作用介绍如下。选项可以省略。各选项的具体作用介绍如下。(1)修饰符:在)修饰符:在Java程序中,关键字程序中,关键字class前的
4、修饰符是用来限定所声明的前的修饰符是用来限定所声明的类的特性。现阶段,类的修饰符一般为类的特性。现阶段,类的修饰符一般为public,它表示该类可以被任何对象,它表示该类可以被任何对象或其他类来访问、调用。关于修饰符将在本章第或其他类来访问、调用。关于修饰符将在本章第3节中具体介绍。节中具体介绍。(2)类的父类:在)类的父类:在Java程序中,如果一个类是另一个类的子类,需要继承父程序中,如果一个类是另一个类的子类,需要继承父类的某些功能时,就要用类的某些功能时,就要用extends关键字来指明类的父类。例如,关键字来指明类的父类。例如,“电脑电脑”类类可以看作是可以看作是“电器电器”类的子类
5、。类的子类。Java语言中,如果没有使用语言中,如果没有使用extends说明类说明类的父类,那么每个类都有一个默认的直接父类,它是的父类,那么每个类都有一个默认的直接父类,它是java.lang包中的包中的Object类。类。(3)实现接口:在)实现接口:在Java语言中,还有一个在语法上类似于类的概念,叫接口,语言中,还有一个在语法上类似于类的概念,叫接口,为了能够在类中使用接口,就需要用关键字为了能够在类中使用接口,就需要用关键字implements。在本章第。在本章第3节有接节有接口的详细讲解。口的详细讲解。 2构造方法构造方法构造方法(构造方法(Constructor Method)
6、也称为构造函数,是一种特殊的方法。在)也称为构造函数,是一种特殊的方法。在创建对象时,使用关键字创建对象时,使用关键字new调用这个对象所属类的构造方法来完成对象实调用这个对象所属类的构造方法来完成对象实例变量的初始化。构造方法的格式如下。例变量的初始化。构造方法的格式如下。其中,其中,“语句体语句体”为初始化实例变量的赋值语句,可以使用参数值作为变量为初始化实例变量的赋值语句,可以使用参数值作为变量的初值,也可以直接给变量赋具体的数值。的初值,也可以直接给变量赋具体的数值。一般来说,构造方法具有以下几个特点。一般来说,构造方法具有以下几个特点。构造方法的方法名与其所在类的名称相同。构造方法的
7、方法名与其所在类的名称相同。虽然构造方法没有返回值,但是也不能有虽然构造方法没有返回值,但是也不能有void关键字。关键字。构造方法的修饰符总是构造方法的修饰符总是public。构造方法的主要作用是完成对类对象实例变量的初始化工作。构造方法的主要作用是完成对类对象实例变量的初始化工作。例如,下面的语句是例如,下面的语句是People类的一种构造方法,一共给类的一种构造方法,一共给4个实例变量赋了初个实例变量赋了初值。当调用该构造方法时,就可以完成对值。当调用该构造方法时,就可以完成对4个实例变量的初始化。也就是说,个实例变量的初始化。也就是说,每个每个People类对象中的变量类对象中的变量n
8、ame、gender、birth和和height具有相同的初始具有相同的初始值。值。public 类名类名(参数列表参数列表) 语句体语句体如果希望在创建对象时,其实例变量具有不同的初值,可以通过传递参数并如果希望在创建对象时,其实例变量具有不同的初值,可以通过传递参数并将参数值赋给实例变量的方法来实现。构造方法的参数要与实例变量一一对将参数值赋给实例变量的方法来实现。构造方法的参数要与实例变量一一对应,例如,应,例如,People类的另一种构造方法如下:类的另一种构造方法如下:public People() name=李明李明; gender=M; birth=1977; height=1.
9、85;public People(String initName,char initGender,int initBirth,double initHeight) name=initName; gender=initGender; birth=initBirth; height=initHeight;创建类的构造方法后,就可以在应用程序中创建类的实例变量了。例如,下创建类的构造方法后,就可以在应用程序中创建类的实例变量了。例如,下面的语句是在某个应用面的语句是在某个应用People类的程序中,使用上面的类的程序中,使用上面的2种构造方法分别创种构造方法分别创建了建了3个个People类的对象类
10、的对象p1、p2和和p3。因为在第因为在第1条语句中没有参数,所以调用第条语句中没有参数,所以调用第1个构造方法,也就是说执行构造个构造方法,也就是说执行构造方法方法People()中的语句,中的语句,pl对象中的实例变量对象中的实例变量name的值为的值为李明李明、gender的的值为值为M、birth的值为的值为1977、height的值为的值为1.85。第。第2和和3条语句具有参数,则条语句具有参数,则分别调用第分别调用第2个构造方法,将参数值赋给相对应的实例变量。个构造方法,将参数值赋给相对应的实例变量。一般情况下,一个类中可以有一个或者多个构造方法,它们的方法名称相同一般情况下,一个
11、类中可以有一个或者多个构造方法,它们的方法名称相同但是参数不同,相当于方法的重载。如果在声明类对象时没有声明任何构造但是参数不同,相当于方法的重载。如果在声明类对象时没有声明任何构造方法,系统会自动产生一个构造方法,无需声明,称为默认构造方法。默认方法,系统会自动产生一个构造方法,无需声明,称为默认构造方法。默认构造方法不带形式参数,并且方法体为空。例如,如果上面的构造方法不带形式参数,并且方法体为空。例如,如果上面的People类没有类没有声明构造方法,则系统产生的默认构造方法如下。声明构造方法,则系统产生的默认构造方法如下。People p1=new People();People p2=
12、new People(张思安张思安,M,1987,1.72);People p3=new People(薛红薛红,F,1990,1.55);People() 3类的变量类的变量前面介绍过域是类或者对象的状态属性的总称。它可以是普通数据类型的变前面介绍过域是类或者对象的状态属性的总称。它可以是普通数据类型的变量,也可以是其他类的对象类型变量。域常见的有实例变量、静态变量、最量,也可以是其他类的对象类型变量。域常见的有实例变量、静态变量、最终变量和易失变量终变量和易失变量4种形式。介绍如下。种形式。介绍如下。(1)实例变量()实例变量(Instance Variable):实例变量用来存储某个类对
13、象的状态):实例变量用来存储某个类对象的状态值。它必须在类内或任何方法外被定义,一般位于整个类语句体的最前端。值。它必须在类内或任何方法外被定义,一般位于整个类语句体的最前端。其修饰符可以是其修饰符可以是public或者或者private,但是不能使用,但是不能使用static。实例变量的使用。实例变量的使用范围是整个类,也就是说可以在类中的任何方法内被使用。实例变量是依据范围是整个类,也就是说可以在类中的任何方法内被使用。实例变量是依据其对象存在的,当运行程序创建对象的同时,也创建了其实例变量,当程序其对象存在的,当运行程序创建对象的同时,也创建了其实例变量,当程序运行完成,对象消失,其实例
14、变量也同时消失。例如,下面的部分程序代码运行完成,对象消失,其实例变量也同时消失。例如,下面的部分程序代码声明了一个声明了一个People类的实例变量。类的实例变量。public class People public String name; public char gender; public int birth; public double height; 其中,实例变量其中,实例变量name、gender、birth和和height分别表示人的姓名、性别、分别表示人的姓名、性别、出生年份和身高。当创建出生年份和身高。当创建People类的对象时,每个对象的实例变量也是这类的对象时,每个
15、对象的实例变量也是这4个变量,只是对象之间的变量值有可能不同。每一个个变量,只是对象之间的变量值有可能不同。每一个People类对象具有的实类对象具有的实例变量个数和名称是一样的,但是在内存中各自独立占据不同的位置,保存例变量个数和名称是一样的,但是在内存中各自独立占据不同的位置,保存的变量值各不相同。的变量值各不相同。(2)静态变量()静态变量(Static Variable):用修饰符):用修饰符static修饰的变量称为类静态修饰的变量称为类静态变量,也叫做静态变量或者类变量。静态变量是类的变量,不属于任何一个变量,也叫做静态变量或者类变量。静态变量是类的变量,不属于任何一个类的具体对象
16、实例。它不保存在某个对象实例的内存空间中,而是保存在类类的具体对象实例。它不保存在某个对象实例的内存空间中,而是保存在类的内存空间的公共存储单元中。也就是说,不论一个类具有多少个对象,静的内存空间的公共存储单元中。也就是说,不论一个类具有多少个对象,静态变量只有一个,任何一个类的对象访问它,取得的都是相同的数值。同样态变量只有一个,任何一个类的对象访问它,取得的都是相同的数值。同样地,任何一个类的对象去修改它,也都是在对同一个内存单元进行操作。静地,任何一个类的对象去修改它,也都是在对同一个内存单元进行操作。静态变量可以通过类名直接访问,也可以通过对象来调用。采用这两种方法取态变量可以通过类名
17、直接访问,也可以通过对象来调用。采用这两种方法取得的结果是相同的。得的结果是相同的。例如,下面的语句在例如,下面的语句在People类中声明一个静态变量类中声明一个静态变量language,用来表示人所,用来表示人所使用的语言。使用的语言。static String language=汉语汉语;然后在应用程序的然后在应用程序的main()方法中有如下语句。方法中有如下语句。在上面的语句中,在上面的语句中,p1和和p2是是People类的对象变量。第类的对象变量。第1个打印语句中的个打印语句中的pl.language调用调用People类的静态变量类的静态变量lanuage,其值为,其值为汉语汉
18、语。然后通过。然后通过p2来改变变量来改变变量language的值为的值为“英语英语”,第,第2个打印语句的输出值为个打印语句的输出值为“英语英语”,这表示对象这表示对象p1和和p2访问的是同一个变量访问的是同一个变量language。再通过使用类名直接改变。再通过使用类名直接改变变量变量lanuage的值为的值为“法语法语”,最后一个打印语句的输出值为,最后一个打印语句的输出值为“法语法语”,这表,这表示通过类名和对象示通过类名和对象p1访问的是同一个变量访问的是同一个变量language。静态变量与实例变量虽然都是在类内、类中方法之外定义的变量,但是它们静态变量与实例变量虽然都是在类内、类
19、中方法之外定义的变量,但是它们有着本质的不同。有着本质的不同。实例变量一般使用实例变量一般使用private或者或者public作为修饰符。每个类的对象都具有一套作为修饰符。每个类的对象都具有一套属于自己的、在类中定义的实例变量。每个对象只能修改或者访问其自身的属于自己的、在类中定义的实例变量。每个对象只能修改或者访问其自身的实例变量,不会影响其他对象的实例变量。实例变量,不会影响其他对象的实例变量。System.out.println(p1.language);p2.language=英语英语;System.out.println(p1.language);People.language=法
20、语法语;System.out.println(p1.language);静态变量使用静态变量使用static修饰符。每个类的所有对象共同拥有一套类的静态变量。修饰符。每个类的所有对象共同拥有一套类的静态变量。类和其对象都可以修改或者访问静态变量。类和其对象都可以修改或者访问静态变量。(3)最终变量()最终变量(Final Variable):在编写程序时,可以给某些经常要使用):在编写程序时,可以给某些经常要使用的具有特殊含义或者内容复杂的常量,取一个类似于变量名的标识符,这样的具有特殊含义或者内容复杂的常量,取一个类似于变量名的标识符,这样就可以通过使用这个变量名称来引用其对应的常量,而不是
21、每次直接输入常就可以通过使用这个变量名称来引用其对应的常量,而不是每次直接输入常量数值。这种做法的最主要目的是使程序更加清楚,利于其他人阅读、理解。量数值。这种做法的最主要目的是使程序更加清楚,利于其他人阅读、理解。使用修饰符使用修饰符final修饰的变量是最终变量,其保存的数据在程序的整个执行过修饰的变量是最终变量,其保存的数据在程序的整个执行过程中都不会改变。通常,在程中都不会改变。通常,在final前面再加上修饰符前面再加上修饰符static,那么这个变量的实,那么这个变量的实际含义就是常量。例如,际含义就是常量。例如,在程序中,给最终变量赋值以后,就不可以再以任何方式改变其值。在程序中
22、,给最终变量赋值以后,就不可以再以任何方式改变其值。final修修饰符可以修饰局部变量,但也必须且只能赋值一次,它的取值在变量存在期饰符可以修饰局部变量,但也必须且只能赋值一次,它的取值在变量存在期间不会改变。间不会改变。(4)易失变量()易失变量(Volatile Variable):如果一个变量被):如果一个变量被volatile修饰符所修饰,修饰符所修饰,说明这个变量可能同时被几个线程所控制和修改,即这个变量不仅仅被当前说明这个变量可能同时被几个线程所控制和修改,即这个变量不仅仅被当前程序所掌握,在运行过程中可能存在其他未知的程序操作来影响和改变该变程序所掌握,在运行过程中可能存在其他未
23、知的程序操作来影响和改变该变量的值。在使用当中,应该特别留意这些影响因素。量的值。在使用当中,应该特别留意这些影响因素。static final double pi=3.141592653589763;static final String str=str是最终变量是最终变量;通常,通常,volatile用来修饰接受外部输入的变量。例如,表示当前时间的变量将用来修饰接受外部输入的变量。例如,表示当前时间的变量将由系统的后台线程随时修改,以保证程序中取到的总是最新的当前的系统时由系统的后台线程随时修改,以保证程序中取到的总是最新的当前的系统时间,所以可以把它声明为易失变量。间,所以可以把它声明为
24、易失变量。4类的方法类的方法除了构造方法外,类中还有许多描述类行为的方法,这些方法中最常用的是除了构造方法外,类中还有许多描述类行为的方法,这些方法中最常用的是实例方法和静态方法两种。用实例方法和静态方法两种。用static修饰符修饰的方法为静态方法,又称为类修饰符修饰的方法为静态方法,又称为类方法。不用方法。不用static修饰的方法,则为实例方法。下面将分别具体介绍这两种方修饰的方法,则为实例方法。下面将分别具体介绍这两种方法。法。(1)实例方法()实例方法(Instance Method):实例方法属于每个对象,只能通过类):实例方法属于每个对象,只能通过类的对象调用。实例方法用来定义某
25、个类的行为,也就是说类的对象所能进行的对象调用。实例方法用来定义某个类的行为,也就是说类的对象所能进行的操作与实例变量一样,实例方法的修饰符可以是的操作与实例变量一样,实例方法的修饰符可以是public或者或者private,但是,但是不能用不能用static。如果希望实例方法可以在类之外被访问,则使用。如果希望实例方法可以在类之外被访问,则使用public;如果;如果希望实例方法只在类内被访问,则使用希望实例方法只在类内被访问,则使用private。例如,下面的语句在例如,下面的语句在People类中声明了一个类中声明了一个age()方法,用来计算方法,用来计算People类类某个对象的年龄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 面向对象的程序设计课件 面向 对象 程序设计 课件
限制150内