已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章导读 1. 类声明和类体 2. 类体的构成 3.构造方法与对象的创建 4. 对象的引用与实体 5. 成员变量:类和实例 6. 方法:类和实例,第4章 类与对象,7. 方法重载 8. this关键字 9. 包 10. import 语句 11. 访问权限 12. 基本类型数据的类包装,4.1 类声明和类体,类是组成Java程序的基本要素。类封装了一类对象的状态和方法。 用类创建对象,当使用一个类创建了一个对象时,我们也说给出了这个类的一个实例。 在语法上,类由两部分构成:类声明和类体。基本格式为: class 类名 类体的内容 ,class是关键字,用来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符。两个大括号“”、“”以及之间的内容称作类体。 以下是两个类声明的例子。 class Dog class 机动车 ,4.2 类体的构成,类体内容可以有2种类型的成员: 1成员变量:用来刻画类创建的对象的属性。 2方法:方法是类体的重要成员之一。 构造方法、类方法、对象方法,例如: 一个类名为“机动车”的类, 类体内容的变量定义部分定义了2个float类型的变量+3个方法,类成员变量的初始化和操作,在定义类的成员变量时可以同时赋予初值,表明类所创建的对象的初始状态。 需要注意的是。对成员变量的操作只能放在方法中,方法可以对成员变量进行操作形成算法, 如: 但是不可以 这样 做 因为,a=12是赋值语句,不是数据的声明。 类的成员类型中可以有数据和方法,即数据的定义和方法的定义,但没有语句,语句必须放在方法中。,4.3构造方法与对象的创建,类中有一部分方法称作构造方法,类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。 构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型。 Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。,Rect类有两个构造方法:,Class Rect Rect()width=0;height=0; Rect(double a,double b) width=a;heigth=b; Double width,height; ,1.对象创建,创建一个对象包括对象的声明和为对象分配成员变量两个步骤。 1对象的声明。 一般格式为: 类的名字 对象名字; 如: Rect rectangleOne;,2为声明的对象分配成员变量 使用new运算符和类的构造方法为声明的对象分配成员变量; 上述的Rect类提供了2个构造方法,下面都是合法的创建对象的语句: rectangleOne =new Rect(); 或 rectangleOne =new Rect(10,20);,为对象分配成员变量后,内存模型声明对象时的模型图4.2所示,箭头示意对象可以操作这些属于自己的成员变量。,4使用对象 通过使用运算符“.”,对象可以实现对自己的变量访问 和方法的调用。 (1)对象操作自己的变量(对象的属性) (2)对象调用类中的方法(对象的功能) 下面例子4-1中,“Lader”类创建了2个对象:laderOne, laderTwo。,4.4 对象的引用与实体,我们已经知道,当用类创建一个对象时,成员变量被分配内存空间,这些内存空间称做该对象的实体或变量,而对象中存放着引用,以确保这些变量由该对象操作使用。 因此,如果两个对象有相同的引用,那么就具有同样的实体。 假如使用例子1“Lader”类的构造方法创建了两个对象 t1,t2。 t1=new Lader(11,22,33);/独立的内存空间 t2=new Lader(6,12,18);/独立的内存空间 t1=t2;/t1 t2都指向t2的内存空间,t1的内存空间将被“垃圾收集”系统自动释放。,Java具有“垃圾收集”机制,Java的运行环境周期地检测某个实体是否已不再被任何对象所引用,如果发现这样的实体,就释放实体占有的内存。 因此,Java编程人员不必象C+程序员那样,要时刻自己检查哪些对象应该释放内存。,4.5 成员变量,1、类变量和实例变量 用关键字static修饰的成员变量称作静态变量或类变量, 而没有使用static修饰的成员变量称作实例变量。 例如,下述A类中,x是实例变量,而y是类变量。 class A float x; static int y; ,类变量和实例变量的访问区别,类变量不仅可以通过某个对象访问也可以直接通过类名访问。它们是同一个内存空间。所有类的对象集合共同维护这个变量,大家共有的东西。 实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量必须通过对象访问。 下面例子2中,两个“ Lader”对象共享bottom。,2符号常量 如果一个成员变量修饰为final,就是常量,常量的名字习惯用大写字母,例如: final int MAX=100; 声明final成员变量时,必须要初始化。对于final修饰的成员变量,可以操作使用,但不能做更改值。 下面的例子给出了常量的用法。,4.6 方法,类中一部分方法称作构造方法。对象不可以直接调用构造方法,只有创建对象才可使用。 另一部分方法可分为实例方法和类方法。,方法的定义包括两部分:方法声明和方法体。,一般格式为: 方法声明部分 方法体的内容 ,方法的名字如果由多个单词组成,从第2个单词开始的其它单词的首写字母使用大写。例如 float getTrangleArea() void setCircleRadius(double radius),实例方法与类方法类内互调方法的规则,3实例方法与类方法 方法声明中用关键字static修饰的称作类方法或静态方法; 不用static修饰的称作实例方法。 一个类中的方法可以互相调用:实例方法可以调用该类中实例方法或类方法;类方法只能调用该类的类方法,不能调用实例方法;如:,实例方法与类方法类外调用的规则,(1)实例方法必须通过对象来调用 (2)类方法可以通过类名和对象名调用 类内的实例方法与类方法调用成员变量的规则: 实例方法可以操作成员变量,无论是实例变量或类变量; 而类方法只能操作类变量不能操作实例变量。 下面的例子4,通过类名调用类方法。,4参数传递 (1)基本数据类型参数的传值 下面的例子5中,向一个方法的基本型参数传值。,(2)引用类型参数的传值 Java的引用型数据包括我们以前学习过的对象、数组以及后面将要学习的接口。 当参数是引用类型时,传递的是变量的引用而不是变量所引用的实体。 如果改变形参变量所引用的实体,就会导致实参变量的实体发生同样的变化, 因为,两个引用型变量如果具有同样的引用,就会共同的实体。 但是,改变形参的引用不会影响实参的引用。 下面的例子4-6向一个方法的引用型参数传值。,4.7 方法重载,方法重载是指一个类中可以有多个方法具有相同的名字; 方法的参数必须不同: 或者是参数的个数不同 或者是参数的类型不同。 下面例4-8 Area类中getArea方法是一个重载方法。,4.8 this 关键字,this代表当前创建的对象,可以出现在实例方法和构造方法中,但不可以出现在类方法中。 1在构造方法中使用this 下述例子4-9中的构造方法中出现了this,表示该对象在构造自己时调用了方法cry()。 2在实例方法中使用this this代表使用该方法的当前对象。,实例方法可以操作成员变量。默认的格式是: this.成员变量; 意思是当前对象的成员变量,如: class A int x; void f() this.x=100;/此时,可以省略 ,实例方法中的this,类的实例方法可以调用类的其它方法,调用的默认格式是 this.方法; 如: 一个方法调用另一个方法时可以省略方法名字前面的“this.”。,3类方法中不可以使用this this不能出现在类方法中,这是因为,类方法可以通过类名直接调用,这时,可能还没有任何对象诞生。,4使用this区分成员变量和局部变量,如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。如: 这时如果想在该方法内使用成员变量,成员变量前面的“this.”就不可以省略,如:,4.9 包,通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。 package语句的一般格式为: package 包名; 包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成, 如: package sunrise; package ;,我们将下述例子10 tom.jiafei包:例子中所有编译后类的class文件都在该包中 Tom/jiafei二级目录,4.10 import 语句,使用import 语句可以引入包中的类。 Java为我们提供了大约130多个包,如: java.applet 包含所有的实现Java applet的类 java.awt 包含抽象窗口工具集中的图形、文本、窗口GUI类 java.awt.image 包含抽象窗口工具集中的图像处理类 java.lang 包含所有的基本语言类 java.io 包含所有的输入输出类 包含所有实现网络功能的类 java.until 包含有用的数据类型类,下面的例子11使用了java.util包中的Date类,用来显示本机的当前时间。,4.11 访问权限,类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限。 1私有变量和私有方法 用关键字private修饰的成员变量和方法被称为私有变量和私有方法。 对于私有成员变量或方法, 只有本类中创建该类的对象+类中的方法,才能访问自己的私有成员变量和类中的私有方法,如例子14所示。,2友好变量和友好方法 不用private、public 等修饰符的成员变量和方法被称为友好变量和友好方法,如: class A float weight; /weight是友好的float型变量。 float f(float a,float b) /方法 f是友好方法。 ,假如B与A是同一个包中的类,那么,下述B类中的a.weight、a.f(3,4)都是合法的。 class B void g() A cat=new A(); a.weight=23f; /合法。 a.f(3,4); /合法。 ,返回,假设对象a是A类创建的,我们把对象对成员的 访问权限总结在下表4.1中,4.12 基本类型数据的类包装,Java的基本数据类型包括:byte、int、short、long、float、double、char。 Java同时也提供了基本数据类型相关的类,实现了对基本数据类型的封装。 这些类在java.lang包中,分别是:Byte、Integer、Short、Long、Float、Double和Character类。 1.Double和Float类 如何把double、float 变成double、Float : 可以使用Double类的构造方法:,Double (double num): 创建一个Double类型的对象; 使用Float类的构造方法: Float (float num):创建一个Float类型的对象。 反之: Double对象调用doubleValue()方法可以返回该对象含有的double型数据; Float对象调用floatValue()方法可以返回该对象含有的float型数据。,2.Character类 Character类实现了对char基本型数据的类包装。 可以使用Character类的构造方法: Character (char c): 创建一个Character类型的对象。 反之,Character对象调charValue()方法可以返回该对象含有的char型数据。 Character类中的一些常用类方法:,l public static boolean isLowerCase(char ch) 如果ch是大写字母方法返回 true,否则返回false。 l public static boolean isUpperCase(char ch) 如果ch是大写字母方法返回 true,否则返回false。 l public static char toLowerCase(char ch) 返回ch的小写形式。 l public static char toUpperCase(char ch) 返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术妈妈教案10篇
- L-Arabinitol-Standard-生命科学试剂-MCE
- 高一年级组下学期工作计划(10篇)
- KSCM-1-生命科学试剂-MCE
- Kayahope-生命科学试剂-MCE
- Isophthalic-acid-Standard-生命科学试剂-MCE
- 高架桥桩基静压桩工程施工组织设计方案
- 汽修运用与维修专业建设方案
- 沙石运输行业信息共享协议
- 体育器材运输安全协议合同
- 《整式的加减》专项练习100题(有答案)
- 《食品雕刻》授课教案
- 分布式光伏发电项目并网验收调试报告
- 企业发展规划部工作总结
- 咖啡厅室内设计PPT
- 北师大一年级数学上册期中测试卷及答案
- 小学二年级上册美术课件-5.17漂亮的钟-岭南版(14张)ppt课件
- 苏教版六年级上册音乐教案全册
- 江苏某市政道路地下通道工程深基坑支护及土方开挖施工专项方案(附图)
- 生物校本教材—生活中的生物科学
- 北京市建筑施工起重机械设备管理的若干规定
评论
0/150
提交评论