3.6封装、包的定义及导入

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

——包的定义及导入3.6封装本节目标了解多人开发的问题掌握包的作用及定义掌握包的导入语法及导入限制了解系统常用包掌握Java新特性——静态导入掌握jar命令的使用掌握四种访问控制权限的作用多人开发在Java中,可以将一个大型项目中的类分别独立出来,分门别类地存到文件里,再将这些文件一起编译执行,如此的程序代码将更易于维护。多人开发的问题如果有多个开发人员共同开发同一个项目的时候,则肯定会出现类名称相同的情况。那么这样一来就会比较麻烦包的定义package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可。包的定义格式:package包名称.子包名称;为程序打包packageorg.chj.demo08;//定义一个包classDemo{//定义Demo类publicStringgetInfo(){//返回信息returnHelloWorld!!!;}}publicclassPackageDemo01{publicstaticvoidmain(String[]args){System.out.println(newDemo().getInfo());//实例化本包对象}}程序编译:javac-d.PackageDemo01.javaimport语句之前所讲解的程序,两个类是存放在同一个包中的,因此代码与之前没有什么根本的不同,但是如果几个类存放在不同的包中,则在使用类的时候就必须通过import语句导入。语法:import包名称.子包名称.类名称;手工导入所需要的类import包名称.子包名称.*;由JVM自动加载所需要的类/*Demo.java*/packageorg.chj.demo08.a;//定义一个*.a包classDemo{//定义Demo类publicStringgetInfo(){//返回信息returnHelloWorld!!!;}}/*ImportDemo.java*/packageorg.chj.demo08.b;//放在不同的包中importorg.chj.demo08.a.Demo;//导入不同包中的Demo类publicclassImportDemo01{publicstaticvoidmain(String[]args){System.out.println(newDemo().getInfo());//实例化本包对象}}关于“publicclass”与“class”声明类的完整补充在本书的一开始,曾经讲解过,如果一个类声明为publicclass则文件名称必须与类名称一致,而且在一个类中只能有一个publicclass,而如果使用class声明一个类,则文件名称可以与类名称不一致,但是执行的时候必须执行生成的class文件名称。除了这些之外,publicclass和class还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问,则直接声明成class即可,而如果一个类需要被外包访问,则必须声明为publicclass。包导入的两种方式importorg.chj.demo08.a.*;importorg.chj.demo08.a.Demo;系统常见包No.包名称作用1java.lang此包为基本的包,像String这样的类就都保存在此包之中,在JDK1.0的时候如果想编写程序,则必须手工导入此包,但是随后的JDK解决了此问题,所以此包现在为自动导入。2java.lang.reflect此包为反射机制的包,是java.lang的子包,在Java常用类库中会介绍。3java.util此包为工具包,一些常用的类库、日期操作等等都在此包之中,如果把此包掌握精通各种设计思路都好理解。4java.text提供了一些文本的处理类库。5java.sql数据库操作包,提供了各种数据库操作的类和接口。6java.net完成网络编程。7java.io输入、输出处理。8java.awt包含了构成抽象窗口工具集(abstractwindowtoolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。9javax.swing此包用于建立图形用户界面,此包中的组件相对于java.awt包而言是轻量级组件。JAVA新特性——静态导入在JDK1.5之后提供了静态导入功能,那么什么叫静态导入呢?如果一个类中的方法全部是使用static声明的静态方法,则在导入的时候就可以直接使用“importstatic”的方式导入,导入的格式如下:importstatic包.类.*;jar命令的使用当开发者为客户开发出了一套JAVA类之后,肯定要把这些类交给用户使用,但是如果所有的类是直接通过*.class的格式给用户,则会比较麻烦,所以一般情况下会将这些*.class文件压缩成一个文件交付给客户使用,那么这样的文件就称为jar文件(JavaArchiveFile),如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。Jar命令中的主要参数:“c”创建新的文档“v”生成详细的输出信息“f”指定存档的文件名将下面的程序打成jar包packageorg.chj.demo01.demo;publicclassHello{publicStringgetInfo(){returnHello;}}将其打包编译:javac–d.Hello.java将其打成jar包:jar–cvfmy.jarorg如何使用jar包packageorg.chj.demo01;importorg.chj.demo01.demo.Hello;publicclassImportJarDemo{publicstaticvoidmain(Stringargs[]){Hellohello=newHello();System.out.println(hello.getInfo());}}setclasspath=.;e:\my.jar;访问控制权限Java中存在四种访问权限:private访问权限default(默认)访问权限protected访问权限public访问权限范围privatedefaultprotectedpublic同一类同一包中的类不同包的子类其他包中的类下一节内容封装性本节目标掌握封装的产生目的掌握封装的实现掌握setter和getter方法的定义为什么要有封装classPerson{Stringname;//声明姓名属性intage;//声明年龄属性publicvoidtell(){//取得信息的方法System.out.println(姓名:+name+,年龄:+age);}}publicclassEncDemo01{publicstaticvoidmain(Stringargs[]){Personper=newPerson();//声明并实例化对象per.name=张三;//为name属性赋值per.age=-30;//为age属性赋值per.tell();//调用方法}}封装的实现为属性封装:private属性类型属性名称;为方法封装:private方法返回值方法名称(参数列表){}classPerson{privateStringname;//声明姓名属性privateintage;//声明年龄属性publicvoidtell(){//取得信息的方法System.out.println(姓名:+name+,年龄:+age);}}publicclassEncDemo02{publicstaticvoidmain(Stringargs[]){Personper=newPerson();per.name=张三;//错误,无法访问封装属性per.age=-30;//错误,无法访问封装属性per.tell();}}访问封装的内容需要编写setter方法和getter方法例如privateStringname;setter(设置):publicvoidsetName(Stringn){}getter(取得):publicStringgetName(){}setter及getterclassPerson{privateStringname;privateintage;publicvoidtell(){System.out.println(姓名:+getName()+,年龄:+getAge());}publicStringgetName(){returnname;}publicvoidsetName(Stringn){name=n;}publicintgetAge(){returnage;}publicvoidsetAge(inta){age=a;}}加入验证可以在setter方法中对设置的内容进行验证publicvoidsetAge(inta){//设置年龄if(a=0&&a150){//在此处加上验证代码age=a;}}封装的类图表示Person--nameage:String:int+++++tell()getName()setName(Stringn)getAge()setAge(inta):void:String:void:int:void

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功