《常用的系统类 包 隐藏与封装.ppt》由会员分享,可在线阅读,更多相关《常用的系统类 包 隐藏与封装.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、IBM 课程体系 2008 IBM CorporationJ2EE_Struts第第4 4讲讲 面向对象面向对象-常用系统类常用系统类 包包 隐藏与封装隐藏与封装 IBM 课程体系 2008 IBM CorporationJ2EE_Struts上次回顾上次回顾 熟练掌握静态变量、实例变量和静态方法的使用熟练掌握静态变量、实例变量和静态方法的使用(重点重点)熟练掌握局部变量的生命周期和作用域熟练掌握局部变量的生命周期和作用域(重点重点)熟练掌握熟练掌握this引用引用(重点重点)熟练掌握参数传递熟练掌握参数传递(重点重点)掌握掌握final变量变量IBM 课程体系 2008 IBM Corpor
2、ationJ2EE_Struts本讲目标本讲目标Object、Random、Math、System及及日期时日期时间类的学习间类的学习 包的概念包的概念 包的用途包的用途(重点重点)一个包内的类访问另一个包内的类一个包内的类访问另一个包内的类(重点重点)访问控制符访问控制符(重点重点)IBM 课程体系 2008 IBM CorporationJ2EE_StrutsObject类类Object类是类是所有所有Java类的最终祖先类的最终祖先。如果一个类在声明时没有包含如果一个类在声明时没有包含extends(继承)关键字,那(继承)关键字,那么这个类直接继承么这个类直接继承Object类。类。O
3、bject类有以下主要成员方法:类有以下主要成员方法:equals(Objectobj):比较两个对象是否相等。许多:比较两个对象是否相等。许多Java类都覆盖类都覆盖了这个方法。了这个方法。notify():唤醒一个线程。:唤醒一个线程。notifyAll():唤醒所有线程。:唤醒所有线程。wait():使当前线程进入等待状态。:使当前线程进入等待状态。hashCode():返回对象的哈希码。:返回对象的哈希码。toString():返回当前对象的字符串表示,许多类都覆盖了:返回当前对象的字符串表示,许多类都覆盖了toString()方法,返回具有实际意义的内容。方法,返回具有实际意义的内容
4、。IBM 课程体系 2008 IBM CorporationJ2EE_StrutsRandom类类Random类提供了一系列用于类提供了一系列用于生成随机数生成随机数的方法。的方法。nextInt():返回下一个返回下一个int类型的随机数。类型的随机数。nextInt(intn):返回下一个返回下一个int类型的随机数,随机数的值大于或等于类型的随机数,随机数的值大于或等于0,并且小于参数,并且小于参数n。nextLong():返回下一个返回下一个long类型的随机数,随机数的值位于类型的随机数,随机数的值位于long类型类型的取值范围内。的取值范围内。nextFloat():返回下一个返回
5、下一个flaot类型的随机数,随机数的值大于或等于类型的随机数,随机数的值大于或等于0,并且小于并且小于1.0。nextDouble():返回下一个返回下一个double类型的随机数,随机数的值大于或等类型的随机数,随机数的值大于或等于于0,并且小于,并且小于1.0。nextBoolean():返回下一个返回下一个boolean类型的随机数,随机数的值为类型的随机数,随机数的值为true或或false。IBM 课程体系 2008 IBM CorporationJ2EE_StrutsMath类类Math类类保留了所有用于几何学,三角学及几种一般用途的浮保留了所有用于几何学,三角学及几种一般用途的
6、浮点函数点函数,包括:三角函数,指数函数,舍入函数等。,包括:三角函数,指数函数,舍入函数等。Math类是类是final类型类型的,因此不能有子类。的,因此不能有子类。Math类的类的构造方法是构造方法是private类型类型的,因此的,因此Math类不能够被类不能够被实例化。实例化。Math类的常用属性如下:类的常用属性如下:Math.E取得自然数的值。取得自然数的值。Math.PI显示圆周率。显示圆周率。IBM 课程体系 2008 IBM CorporationJ2EE_StrutsMath类类Math类的常用方法如下:类的常用方法如下:abs():求绝对值。:求绝对值。ceil(doub
7、lea):取:取a上限值,如上限值,如ceil(3.1)=4,ceil(3.6)=4。floor(doublea):取:取a的下限值,如的下限值,如floor(3.1)=3,floor(3.7)=3round():返回四舍五入的整数值。:返回四舍五入的整数值。exp(doublea):返回自然对数的幂。:返回自然对数的幂。pow(doublea,doubleb):求:求a的的b次方次方.sqrt():平方根函数。:平方根函数。.IBM 课程体系 2008 IBM CorporationJ2EE_Struts日期时间类日期时间类(Date)Date类位于类位于java.util包包中,用来表示日
8、期和时间,中,用来表示日期和时间,该类所表示的时间是该类所表示的时间是精确到毫秒精确到毫秒的。的。常用方法如下:常用方法如下:Date():构造一个:构造一个Date对象并对其进行初始化以反映当前时间。对象并对其进行初始化以反映当前时间。Date(Strings):从一个字符串构造一个:从一个字符串构造一个Date实例实例Date(longdate):构造一个:构造一个Date对象,并根据相对于对象,并根据相对于GMT1970年年1月月1日日00:00:00的毫秒数对其进行初始化。的毫秒数对其进行初始化。参数:参数:date-相对于相对于GMT1970年年1月月1日日00:00:00的毫秒数的
9、毫秒数。before(Datewhen):测试这个日期是否在指定日期之前。:测试这个日期是否在指定日期之前。equals(Objectobj):比较两个日期是否相等。:比较两个日期是否相等。IBM 课程体系 2008 IBM CorporationJ2EE_Struts日期时间类日期时间类(DateFormat)DateFormat:抽象类,用于定制日期的格式。:抽象类,用于定制日期的格式。它有一个具体子类为它有一个具体子类为java.text.SimpleDateFormat DateFormat类的类的parse(Stringtext)方法按照特定的格式把字方法按照特定的格式把字符解析为日
10、期对象。符解析为日期对象。getDateTimeInstance(intdateStyle,inttimeStyle):静态方静态方法;该方法返回表示标准格式的法;该方法返回表示标准格式的DateFormat对象,参数对象,参数dateStyle设定日期风格,参数设定日期风格,参数timeStyle设定时间风格设定时间风格IBM 课程体系 2008 IBM CorporationJ2EE_Struts日期时间类日期时间类(Calendar)Java.util.Calendar类的类的set()和和get()方法可用来设置和读取方法可用来设置和读取日期的特定部分,比如年、月、日、时、分和秒等。日
11、期的特定部分,比如年、月、日、时、分和秒等。Calendar类是类是抽象类抽象类,不能实例化,它有一个具体的子类,不能实例化,它有一个具体的子类,即即java.util.GregorianCalendar。GregorianCalendar采用梅林尼治标准时间采用梅林尼治标准时间,它的它的add()方法方法可用来在日期的特定部分加上一些值。可用来在日期的特定部分加上一些值。IBM 课程体系 2008 IBM CorporationJ2EE_StrutsSystem类类System类是一个类是一个抽象类抽象类,所有的字段和方法都是,所有的字段和方法都是静态静态的。的。其中包含一些有用的类字段和方
12、法,它其中包含一些有用的类字段和方法,它不能被实例化不能被实例化。在在System类提供的设施中,有三个静态的变量类提供的设施中,有三个静态的变量in、out、err,分别对应标准输入、标准输出和错误输出流。,分别对应标准输入、标准输出和错误输出流。System类中常用的静态方法:类中常用的静态方法:exit(intstatus):终止当前正在运行的:终止当前正在运行的Java虚拟机。虚拟机。currentTimeMillis():返回以毫秒为单位的当前时间。返回以毫秒为单位的当前时间。gc():运行垃圾回收器。运行垃圾回收器。getenv(Stringname):获得指定的环境变量值。获得指
13、定的环境变量值。setInt(InputStreamin):重新分配:重新分配“标准标准”输入流。输入流。setOut(OutputStreamout):重新分配:重新分配“标准标准”输出流。输出流。.IBM 课程体系 2008 IBM CorporationJ2EE_StrutsJava包包当当当当编译编译编译编译JavaJava源程序时,对其中的每个类都生成一源程序时,对其中的每个类都生成一源程序时,对其中的每个类都生成一源程序时,对其中的每个类都生成一个个个个.class.class文件,为文件,为文件,为文件,为统一组织和管理统一组织和管理统一组织和管理统一组织和管理它们,它们,它们,
14、它们,JavaJava使使使使用了包的管理慨念。用了包的管理慨念。用了包的管理慨念。用了包的管理慨念。包类似于包类似于包类似于包类似于文件夹文件夹文件夹文件夹,一组相关的类被放在一起,就,一组相关的类被放在一起,就,一组相关的类被放在一起,就,一组相关的类被放在一起,就象一些文件放在一个文件目录下。象一些文件放在一个文件目录下。象一些文件放在一个文件目录下。象一些文件放在一个文件目录下。系统系统系统系统包包包包工具工具工具工具包包包包文件文件文件文件包包包包游戏游戏游戏游戏娱乐娱乐娱乐娱乐包包包包IBM 课程体系 2008 IBM CorporationJ2EE_Struts包允许你将类文件组
15、织起来,便于包允许你将类文件组织起来,便于查找和使用查找和使用合合适的类。适的类。包不仅包含类和接口,还能包含其它包,从而形包不仅包含类和接口,还能包含其它包,从而形成有成有层次层次的包空间。的包空间。包有助于包有助于避免命名冲突避免命名冲突。当你使用很多类时,确。当你使用很多类时,确保类和方法名称的唯一性是非常困难的。包能够保类和方法名称的唯一性是非常困难的。包能够形成形成层次命名空间层次命名空间,缩小了名称冲突的范围,易,缩小了名称冲突的范围,易于管理名称。于管理名称。包的用途包的用途IBM 课程体系 2008 IBM CorporationJ2EE_Strutspackagepackag
16、emypackagemypackage;publicclassCalculatepublicclassCalculate publicpublicintint add(intadd(intx,x,intinty)y)return(x+y);return(x+y);包用下面的方式来创建包用下面的方式来创建package package_name;mypackageCalculate创建包创建包IBM 课程体系 2008 IBM CorporationJ2EE_Struts导入整个包:导入整个包:importpackage_name.*;导入单个类:导入单个类:importpackage_name
17、.class_name;导入位置如上图表示的类导入位置如上图表示的类importMy_Package.MySub_Package.My_Class;My_PackageMy_Sub_PackageMy_Class导入包导入包IBM 课程体系 2008 IBM CorporationJ2EE_Struts为了计算两个整数之和,我们不需要专门写计为了计算两个整数之和,我们不需要专门写计算和的代码。算和的代码。我们可导入包我们可导入包“mypackage”,并使用其中的并使用其中的publicintadd(intx,inty)方法来计算。方法来计算。使用包使用包计算两个数之和的方法计算两个数之和的方
18、法:publicintadd(intx,inty)其他用于计算的方法其他用于计算的方法:Calculate类类IBM 课程体系 2008 IBM CorporationJ2EE_Strutspackage语句语句可有可无可有可无。若无,则。若无,则Java提供一个提供一个无名包;若有,则无名包;若有,则必须是第一条可执行语句必须是第一条可执行语句。同一个包中类名必须唯一同一个包中类名必须唯一,不同包中类名可以相同,不同包中类名可以相同如:包中不能有两个都叫的类,但如:包中不能有两个都叫的类,但包中可以有都叫的类,我们可以通过包结包中可以有都叫的类,我们可以通过包结构层次来访问不同的类构层次来访
19、问不同的类包名一律用包名一律用小写字母小写字母注意事项注意事项IBM 课程体系 2008 IBM CorporationJ2EE_Struts类访问修饰符类访问修饰符private,protected:只能用于内部类只能用于内部类public:可以被同一包或不同包的类访问可以被同一包或不同包的类访问缺省:可以被同一包的类访问,但不能被其它包缺省:可以被同一包的类访问,但不能被其它包的类访问,即使用的类访问,即使用import引入引入或用或用包名包名.类名类名也也不行不行访问控制访问控制IBM 课程体系 2008 IBM CorporationJ2EE_Struts访问控制访问控制使用访问控制符
20、可以将对象中不允许外部程序直接访问的重要属使用访问控制符可以将对象中不允许外部程序直接访问的重要属性,隐藏在对象内部性,隐藏在对象内部。这一过程在。这一过程在Java中叫中叫封装封装(面向对象面向对象三大特征之一,另外两个是三大特征之一,另外两个是继承继承和和多态多态)。)。对一个类或对象实现对一个类或对象实现良好的封装良好的封装,可以实现以下,可以实现以下目的目的:1.隐藏类的实现细节。隐藏类的实现细节。2.让使用都只能通过事先预定的方法来访问数据,从而可以在该方法里加让使用都只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问入控制逻辑,限制对属性的不合
21、理访问3.可进行数据检查,从而有利于保证对象信息的完整性。可进行数据检查,从而有利于保证对象信息的完整性。4.便于修改,提高代码的可维护性。便于修改,提高代码的可维护性。实现良好的封装实现良好的封装,需要从两个方面考虑需要从两个方面考虑:1.将对象的属性和实现细节隐藏起来,不允许外部直接访问将对象的属性和实现细节隐藏起来,不允许外部直接访问2.把方法暴露出来,让方法来操作或访问这些属性。把方法暴露出来,让方法来操作或访问这些属性。IBM 课程体系 2008 IBM CorporationJ2EE_Strutspublic成员:成员:所有的类都可以访问所有的类都可以访问类成员访问修饰符类成员访问
22、修饰符protected成员:成员:可被子类访问,不管是同一个包还是不同包可被子类访问,不管是同一个包还是不同包同一个包中非子类需要通过对象访问同一个包中非子类需要通过对象访问private成员:成员:只有自身类才能访问,其它类一只有自身类才能访问,其它类一概不能访问概不能访问缺省:缺省:称为称为friendly,可被同一包的所有的类访,可被同一包的所有的类访问问IBM 课程体系 2008 IBM CorporationJ2EE_Struts访问控制访问控制private成员成员缺省的缺省的成员成员protected成员成员public成员成员同一类中同一类中 同一包中其他类同一包中其他类 不
23、同包中子类不同包中子类 不同包中非子类不同包中非子类 类成员访问修饰符总结类成员访问修饰符总结IBM 课程体系 2008 IBM CorporationJ2EE_Struts包名中的字母一律小写,如:包名中的字母一律小写,如:mypackage类名、接口名每个单词的首字母要大写,如类名、接口名每个单词的首字母要大写,如MyClass。方法名,第一个单词小写,后面每个单词的首方法名,第一个单词小写,后面每个单词的首字母大写,如:字母大写,如:upToDown。变量名,第一个单词小写,后面每个单词的首变量名,第一个单词小写,后面每个单词的首字母大写,如:字母大写,如:studentName。常量名
24、中字母一律大写,如常量名中字母一律大写,如PLAYGAME。Java的命名习惯的命名习惯IBM 课程体系 2008 IBM CorporationJ2EE_Struts总结总结Object、Random、Math、System及及日期日期时间类的学习时间类的学习 包的概念包的概念 包的用途包的用途 一个包内的类访问另一个包内的类一个包内的类访问另一个包内的类 访问控制符访问控制符IBM 课程体系 2008 IBM CorporationJ2EE_Struts课后任务课后任务编写一个学生管理程序,该程序引入班级管理编写一个学生管理程序,该程序引入班级管理程序。并修改班级管理程序属性的控制符为程序。并修改班级管理程序属性的控制符为private。在学生管理程序里增加修改学生学号、。在学生管理程序里增加修改学生学号、姓名、班级功能。(思考题:姓名、班级功能。(思考题:修改相关类,实修改相关类,实现打印班级全部成员详细信息。)现打印班级全部成员详细信息。)