欢迎来到天天文库
浏览记录
ID:44233973
大小:749.00 KB
页数:72页
时间:2019-10-19
《5.Java面向对象程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章面向对象程序设计5.1类(class)类是组成Java程序的基本元素,它封装了一系列的变量(即数据成员,也称为“域(field)”)和方法(即成员方法method),是一类对象的原型。创建一个新的类,就是创建一个新的数据类型。实例化一个类,就得到一个对象。因此,对象就是一组变量和相关方法的集合,其中变量表明对象的状态、属性,方法表明对象所具有的行为。5.1.1类定义对一个用户自定义的类,要为类取一个名字,并指明类中包含哪些变量和方法以及相应的类型、实现等,这称为类的定义。类定义语句的一般形式为:[修饰符]class类名[extends父类名][
2、implements接口名表]{成员变量声明//类体方法成员声明}其中class、extends和implements都是Java的关键字。修饰符、extends(表示继承)和implements(表示接口)等内容,以后逐渐介绍。类定义中必须要写的内容是类名,应该使用Java语言合法的标识符来对自定义的类命名。在大括号中定义类体,指明该类中包含的数据成员和成员方法。在Java语言中也允许定义没有任何成员的空类。【例5.1】定义一个名为Rect表示长方形的类,它仅包含double类型的长length和宽width两个数据成员。classRect{dou
3、blelength;doublewidth;}在类的定义中,可加入对数据成员进行操作的方法成员。【例5.2】定义一个名为Rectangle表示长方形的类,它包含double类型的长length和宽width两个数据成员和设置长方形长宽值的方法setDim()、计算长方形面积的方法area()。classRectangle{doublelength;doublewidth;doublearea(){returnlength*width;}voidsetDim(doublew,doublel){width=w;length=l;}}在一个程序中,有时需要
4、定义多个类。多个类的定义形式有两种:并列和嵌套。常见的多个类定义形式为并列定义,即一个类接着一个类进行定义,它们之间是并列的关系。另一种形式为嵌套定义,即在一个类中定义另外的类,它们之间是包含和被包含的关系,可分别称为包含类和内部类(或嵌套类)。采用何种形式定义多个类,由类之间的访问关系确定。类定义了一个类型(type)。与Java语言提供的几种基本类型一样,类型用来声明、定义该类型的变量。例如,下面的语句:Rectrect1;声明变量rect1的类型为类Rect。类型为类的变量与基本类型变量有所不同,类是一种引用(reference)类型。实际上,
5、rect1是一个对类型为类Rect的对象的引用,rect1不是对象本身,可理解为一个指针,上述声明仅生成一个空(null)引用。5.1.2类对象一旦定义了所需的类,就可以创建该类的变量,创建类的变量称为类的实例化,类的变量也称为类对象、类的实例等。类的对象是在程序运行中创建生成的,其所占的空间在程序运行中动态分配。当一个类的对象完成了它的使命,为节省资源,Java的垃圾收集程序就会自动收回这个对象所占的空间。即类对象有自己的生命周期。1.创建对象创建类的对象需用new运算符,一般形式为:对象名=new类名()new运算符用指定的类在内存中分配空间,并
6、将存储空间的引用存入语句中的对象变量。例如:rect1=newRect();new运算符也可以与类声明一起使用来创建类的对象。例如:Rectrect1=newRect();2.引用对象在创建了类的对象后,就可以对对象的各个成员进行访问,进行各种处理。访问对象成员的一般形式为:对象名.数据成员名对象名.成员方法名()//方法名带圆括号运算符“.”在这里称为成员运算符,在对象名和成员名)之间起到连接的作用,指明是哪个对象的哪个成员。例如:设已经定义了例5.2中的Rectangle类,可以用如下的方法来引用对象的成员:Rectangler=newRecta
7、ngle();//定义类的对象r.length,r.width//引用对象的数据成员r.area()//引用对象的成员方法【例5.3】利用例5.1定义的类Rect,计算长和宽分别为20和10的长方形面积。classRectDemo{publicstaticvoidmain(Stringargs[]){Rectrect1=newRect();//为对象rect1分配存储空间doublearea;rect1.width=20;//向数据成员赋值rect1.length=10;area=rect1.width*rect1.length;//对数据成员运算S
8、ystem.out.println("长方形面积是:"+area);}}本程序由两个类构成,设已经编译类Re
此文档下载收益归作者所有