第5章 面向对象程序设计.ppt
《第5章 面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章 面向对象程序设计.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、AVCEIT第5章 面向对象程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望AVCEIT5.1 类(class)v类是是组成成Java程程序序的的基基本本元元素素,它它封封装装了了一一系系列列 的的 变 量量(即即 数数 据据 成成 员,也也 称称 为“域域(field)”)和和方方法法(即即成成员方方法法 method),是是一一类对象象的的原原型型。创建建一一个个新新的的类,就就是是创建建一一个个新新的的数数据据类型型。实例例化化一一个个类,就就得得到
2、到一一个个对象象。因因此此,对象象就就是是一一组变量量和和相相关关方方法法的的集集合合,其其中中变量量表表明明对象象的的状状态、属属性性,方方法法表表明明对象所具有的行象所具有的行为。AVCEITv5.1.1 类定定义v对一一个个用用户自自定定义的的类,要要为类取取一一个个名名字字,并并指指明明类中中包包含含哪哪些些变量量和和方方法法以以及及相相应的的类型型、实现等等,这称称为类的定的定义。类定定义语句的一般形式句的一般形式为:修饰符class 类名 extends 父类名 implements 接口名表 成员变量声明 /类体 方法成员声明 v其其中中class、extends和和implem
3、ents都都是是Java的的 关关 键 字字。修修 饰 符符、extends(表表 示示 继 承承)和和implements(表表示示接接口口)等等内内容容,以以后后逐逐渐介介绍。类定定义中中必必须要要写写的的内内容容是是类名名,应该使使用用Java语言合法的言合法的标识符来符来对自定自定义的的类命名。命名。AVCEITv在在大大括括号号中中定定义类体体,指指明明该类中中包包含含的的数数据据成成员和和成成员方方法。在法。在JavaJava语言中也允言中也允许定定义没有任何成没有任何成员的空的空类。v【例例5.15.1】定定义一一个个名名为RectRect表表示示长方方形形的的类,它它仅包包含含
4、doubledouble类型的型的长lengthlength和和宽widthwidth两个数据成两个数据成员。class Rect class Rect double length;double length;double width;double width;v在在类的定的定义中,可加入中,可加入对数据成数据成员进行操作的方法成行操作的方法成员。v【例例5.25.2】定定义一一个个名名为RectangleRectangle表表示示长方方形形的的类,它它包包含含doubledouble类型型的的长lengthlength和和宽widthwidth两两个个数数据据成成员和和设置置长方方形形长宽值
5、的方法的方法setDim()setDim()、计算算长方形面方形面积的方法的方法area()area()。AVCEIT class Rectangle class Rectangle double length;double length;double width;double width;double area()double area()return length*width;return length*width;void setDim(double w,double l)void setDim(double w,double l)width=w;width=w;length=l;len
6、gth=l;v在在一一个个程程序序中中,有有时需需要要定定义多多个个类。多多个个类的的定定义形形式式有有两种:并列和嵌套。两种:并列和嵌套。v常常见的的多多个个类定定义形形式式为并并列列定定义,即即一一个个类接接着着一一个个类进行定行定义,它,它们之之间是并列的关系。是并列的关系。AVCEITv另另一一种种形形式式为嵌嵌套套定定义,即即在在一一个个类中中定定义另另外外的的类,它它们之之间是是包包含含和和被被包包含含的的关关系系,可可分分别称称为包包含含类和和内内部部类(或或嵌嵌套套类)。采采用用何何种种形形式式定定义多多个个类,由,由类之之间的的访问关系确定。关系确定。v类定定义了了一一个个类
7、型型(type)。与与Java语言言提提供供的的几几种种基基本本类型型一一样,类型型用用来来声声明明、定定义该类型型的的变量。例如,下面的量。例如,下面的语句:句:Rect rect1;声明变量rect1的类型为类Rect。v类型型为类的的变量量与与基基本本类型型变量量有有所所不不同同,类是是一一种种引引用用(reference)类型型。实际上上,rect1是是一一个个对类型型为类Rect的的对象象的的引引用用,rect1不不是是对象象本本身身,可可 理理 解解 为 一一 个个 指指 针,上上 述述 声声 明明 仅 生生 成成 一一 个个 空空(null)引用。引用。AVCEITv5.1.2
8、类对象象v一一旦旦定定义了了所所需需的的类,就就可可以以创建建该类的的变量量,创建建类的的变量称量称为类的的实例化,例化,类的的变量也称量也称为类对象、象、类的的实例等。例等。v类的的对象象是是在在程程序序运运行行中中创建建生生成成的的,其其所所占占的的空空间在在程程序序运运行行中中动态分分配配。当当一一个个类的的对象象完完成成了了它它的的使使命命,为节省省资源源,Java的的垃垃圾圾收收集集程程序序就就会会自自动收收回回这个个对象象所所占占的的空空间。即。即类对象有自己的生命周期。象有自己的生命周期。v1.创建建对象象v创建建类的的对象需用象需用new运算符,一般形式运算符,一般形式为:对象
9、名=new 类名()AVCEITvnewnew运运算算符符用用指指定定的的类在在内内存存中中分分配配空空间,并并将将存存储空空间的的引引用存入用存入语句中的句中的对象象变量量。例如:例如:rect1=new Rect();rect1=new Rect();vnewnew运算符也可以与运算符也可以与类声明一起使用来声明一起使用来创建建类的的对象。象。例如:例如:Rect rect1=new Rect();Rect rect1=new Rect();v2.2.引用引用对象象v在在创建建了了类的的对象象后后,就就可可以以对对象象的的各各个个成成员进行行访问,进行各种行各种处理。理。访问对象成象成员的
10、一般形式的一般形式为:对象名象名.数据成数据成员名名 对象名象名.成成员方法名方法名()/()/方法名方法名带圆括号括号AVCEITv运运算算符符“.”“.”在在这里里称称为成成员运运算算符符,在在对象象名名和和成成员名名)之之间起起到到连接接的的作作用用,指指明明是是哪哪个个对象象的的哪哪个个成成员。v例例如如:设已已经定定义了了例例5.25.2中中的的RectangleRectangle类,可可以以用用如下的方法来引用如下的方法来引用对象的成象的成员:Rectangle r=new Rectangle();/定义类的对象 r.length,r.width /引用对象的数据成员 r.area
11、()/引用对象的成员方法v【例例5.35.3】利利用用例例5.15.1定定义的的类RectRect,计算算长和和宽分分别为2020和和1010的的长方形面方形面积。class RectDemo public static void main(String args)Rect rect1=new Rect();/为对象rect1分配存储空间 double area;AVCEIT rect1.width=20;/向数据成员赋值 rect1.length=10;area=rect1.width*rect1.length;/对数据成员运算 System.out.println(长方形面积是:+area
12、);v本本程程序序由由两两个个类构构成成,设已已经编译类Rect文文件件Rect.class和和RectDemo.class,程序的运行程序的运行结果如下:果如下:长方形面积是:200.0v【例例5.5】用用例例5.2中中定定义的的类Rectangle分分别计算算长、宽分分别为20、10和和6、3的两个的两个长方形面方形面积。class RectDemo2 public static void main(String args)Rectangle rect1=new Rectangle();Rectangle rect2=new Rectangle();AVCEIT double ar;rec
13、t1.setDim(20,10);/初始化每个长方形 rect2.setDim(6,3);ar=rect1.area();System.out.println(第一个长方形的面积是:+ar);ar=rect2.area();System.out.println(第二个长方形的面积是:+ar);v程序运行程序运行结果如下:果如下:第一个长方形的面积是:200.0第二个长方形的面积是:18.0 AVCEITv5.1.3 构造方法构造方法v在在Java中中,任任何何变量量在在被被使使用用前前都都必必须先先设置置初初值。Java提提供供了了为类的的成成员变量量赋初初值的的专门功功能能:构构造造方方法法
14、(constructor)。构构造造方方法法是是一一种种特特殊殊的的成成员方法,它的特殊性反映在如下几个方面:方法,它的特殊性反映在如下几个方面:(1)构造方法名与类名相同。(2)构造方法不返回任何值,也没有返回类型。(3)每一个类可以有零个或多个构造方法。(4)构造方法在创建对象时自动执行,一般不能显式地直接调用。AVCEITv【例例5.65.6】分分别计算算长、宽分分别为2020、1010和和6 6、3 3的的两两个个长方方形形面面积。本本程程序序用用构构造造方方法法来来初初始始化化长方方形形的大小。的大小。class RectConstructor double length;doubl
15、e width;double area()return length*width;RectConstructor(double l,double w)length=l;width=w;AVCEIT class RectDemo3 public static void main(String args)RectConstructor rect1=new RectConstructor(20,10);RectConstructor rect2=new RectConstructor(6,3);double ar;ar=rect1.area();System.out.println(第一个长方形的面
16、积是:+ar);ar=rect2.area();System.out.println(第二个长方形的面积是:+ar);v程序运行程序运行结果如下:果如下:第一个长方形的面积是:200.0 第二个长方形的面积是:18.0 AVCEITv5.1.4 5.1.4 类和成和成员的修的修饰符符v在在类和和类的的成成员定定义时可可以以使使用用一一些些修修饰符符(modifiermodifier)来来对类和和成成员的的使使用用作作某某些些限限定定。一一般般将将修修饰符符分分为两两类:访问控控制制符符和和非非访问控控制制 符符。访 问 控控 制制 符符 有有 publicpublic、protectedpro
17、tected、privateprivate等等,它它们的的作作用用是是给予予对象象一一定定的的访问权限限,实现类和和类中中成成员的的信信息息隐藏藏。非非访问控控制制符符作作用用各各不不相相同同,有有staticstatic、finalfinal、nativenative、volatilevolatile、abstractabstract等等。某某些些修修饰符符只只能能应用用于于类的的成成员,某某些些修修饰符符既既可可应用用于于类也也可可应用用于于类的成的成员。AVCEITv1.1.staticstatic修修饰符符v使使用用staticstatic修修饰符符来来修修饰类的的成成员变量量和和方方
18、法法成成员,使使它它们成成为静静态成成员,也也称称为类成成员。静静态成成员存存储于于类的的存存储区区,属属于于整整个个类,而而不不属属于于一一个个具具体体的的类对象象。因因为静静态成成员属属于于整整个个类,所所以以它它被被所所有有该类对象象共共享享。在在不不同同的的类对象象中中访问静静态成成员,访问的是同一个。的是同一个。v对静静态成成员的使用要注意两点:的使用要注意两点:v(1)(1)静静态方方法法不不能能访问属属于于某某个个对象象的的成成员变量量,而而只只能能处理理属属于于整整个个类的的成成员变量量。即即静静态方方法法只只能能处理静理静态变量。量。v(2)(2)可以用两种方式可以用两种方式
19、调用静用静态成成员,它,它们的作用相同。的作用相同。变量:类名.变量、类对象.变量。方法:类名.方法名()、类对象.方法名()。AVCEITv【例【例5.85.8】静】静态成成员的使用。的使用。class StaticDemo static int a=42;static int b=99;static void callme()System.out.println(a=+a);class StaticByName public static void main(String args)StaticDemo.callme();System.out.println(b=+StaticDemo.b
20、);AVCEITv程序运行程序运行结果如下:果如下:a=42 b=99v2.final2.final修修饰符符vfinalfinal修修饰符符可可应用用于于类、方方法法和和变量量。finalfinal的的意意义为终极极或或最最终。finalfinal类不不能能被被继承承,即即finalfinal类无无子子类。finalfinal方方法法不不能能被被覆覆盖盖,即即子子类的的方方法法名名不不能能与与父父类的的finalfinal方方法法名名相相同同。finalfinal变量量实际上上是是JavaJava语言言的的符符号号常常量量,可可在在定定义时赋初初值或或在在定定义后后的的其其他他地地方方赋初初
21、值,但但不不能能再再次次赋值,习惯上上使使用大写的用大写的标识符表示符表示finalfinal变量。例如:量。例如:final double PI=3.1416;final double G=9.18;v因因为finalfinal变量量不不能能改改变,没没有有必必要要在在每每个个对象象中中进行行存存储,可以将可以将finalfinal变量声明量声明为静静态的,以的,以节省存省存储空空间。AVCEIT例如:static final double PI=3.1416;v3.abstract修修饰符符vabstract修修饰符符可可应用用于于类和和方方法法,称称为抽抽象象类和和抽抽象象方方法法。抽抽
22、象象类需需要要继承承、抽抽象象方方法法需需要要在在子子类中中实现才才有有意意义。进一步的一步的讨论见5.2.2抽象抽象类和抽象方法。和抽象方法。v4.native修修饰符符vnative修修饰符符一一般般用用来来声声明明用用其其他他语言言如如C、C+、FORTRAN、汇编等等书写写方方法法体体并并具具体体实现方方法法功功能能的的特特殊殊方方法法。由由于于native方方法法的的方方法法体体使使用用其其他他语言言编写写。所所以以所所有有的的native方方法法都都没没有有方方法法体体。native方方法法可可应用用于于实时性性强、执行效率高,运行速度要求行效率高,运行速度要求较高的高的场合。合。
23、v5.synchronized修修饰符符vsynchronized修修饰符可符可应用于方法或用于方法或块,在多,在多线程程AVCEITv程程序序中中,对用用于于共共享享的的方方法法和和块加加互互斥斥锁,使使得得任任一一时刻刻,synchronized方方法法或或块只只能能由由一一个个线程程执行或操作。行或操作。v5.1.5 类的使用的使用v1.私有成私有成员的的访问v为 了了 降降 低低 类 间 的的 耦耦 合合 性性,可可 以以 为 类 成成 员 指指 定定private修修饰符符,表表示示该成成员只只能能在在该类内内部部访问。若若需需要要在在其其他他类中中访问私私有有成成员,只只能能通通过
24、取取数数和和送送数数的的方方法法来来访问。这样的的方方法法常常命命名名为getXxx()和和setXxx()等。等。v【例【例5.9】私有成】私有成员的的访问。class RectangleRC private double length;private double width;AVCEIT double getLength()/定义取长方形边长的方法 return length;double getWidth()return width;RectangleRC(double l,double w)length=l;width=w;class RectDemo5 public static
25、void main(String args)RectangleRC rect1=new RectangleRC(8,7);double ar=rect1.getLength()*rect1.getWidth();System.out.println(长方形的面积是:+ar);AVCEITv程序运行程序运行结果如下:果如下:长方形的面积是:56.0v2.方法参数是方法参数是类的的对象象v在在Java语言言中中,方方法法的的参参数数类型型除除了了可可以以是是基基本本类型型外外,还可可以以是是引引用用类型型类。因因为在在类的的对象象中中实际存存储为对象象的的引引用用,因因此此在在调用用类参参数数时方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 面向对象程序设计 面向 对象 程序设计
限制150内