包及访问控制权限
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、课程名称:包及访问控制权限
2、知识点
2.1、上次课程的主要知识点
1、Object类:是所有类的父类,一个类如果没有继承一个类的话,则默认继承Object类,在Object类中的toString()方法主要是取得对象的信息,而equals()方法是专门用于进行对象的比较操作。
2、匿名内部类:匿名内部类在开发中肯定要使用,尤其是在以后的框架开发中更是100%应用,所以此部分必须掌握;
3、包装类:将基本数据类型包装成类的形式,就称为包装类,随后也一定要记住的是,包装类中可以存在拆箱及装箱操作,而且使用包装类可以方便的实现字符串向基本数据类型的转换;
4、链表程序本身没指望大家可以100%掌握,每个人必须清楚的知道链表的基本实现原理,就是靠引用和this,以后当不知道存放对象个数的时候就可以使用链表完成;
5、异常处理的流程,如果程序中产生了异常之后,则JVM会自动的为程序实例化一个异常类的实例化对象,之后在try语句中捕获,如果没有捕获,则交给JVM默认处理,如果捕获的话,则与catch中的异常类型相互匹配,如果匹配成功,则表示可以使用此catch进行处理,最后不管是否出现了异常都会执行finally代码,而且finally代码的作用必须结合
标准的异常处理格式来讲,而且异常类的对象传递的时候也依然符合对象的向上转型关系,可以直接使用Exception捕获异常。
6、异常分为两大类:Throwable
·Exception:表示的是程序中出现的异常,用户可以进行处理;
·Error:表示的是JVM错误,此时程序并没有运行,所以即使出现了错误,程序也无法处理。
2.2、本次预计讲解的知识点
1、包的定义及使用;
2、JDK 1.5的新特性——静态导入;
3、java常用包的简介;
4、jar命令;
5、访问控制权限。
3、具体内容
3.1、包的定义及使用(重点)
在实际的工作之中肯定是属于多人进行同一个项目的开发,有可能不同的开发人员会定义同名的操作类,这样一来由于操作系统中一个文件夹中不能存放同一文件,所以肯定会发生覆盖的问题,而且会造成扯皮的问题。
那么要想解决这个问题,只能靠文件夹区分,因为不同的文件夹可以存放同名的文件,而所谓的包就是指一个文件夹,如果程序中加上包之中,
则完整的类名称就是:“包.类”名称。
3.1.1、定义包
如果要想定义一个包的话,可以使用package关键字完成。
现在的程序之中一旦定义了包之后,则完整的类名称就是“org.lxh.demo.Hello”,可是按照包的定义来讲,现在一个类肯定是要保存在文件夹之中,所以在java之中,如果程序中存在了包的话,则编译的时候加上“-d”的参数就会表示自动的根据package的定义生成文件夹:javac -d . Hello.java
·“-d”:要根据定义的包,生成文件夹;
·“.”:表示要生成文件夹的目录,“.”表示在当前所在的文件夹之中生成。
一旦程序打包之后,则以后程序运行的话都必须加上包名称,即:java org.lxh.demo.Hello,而不能说进入到包中直接运行。
从实际开发来讲,每一个类必须存放在一个包中,而且没有包的类是100%不存在的。
3.1.2、导入包
一个类一旦放在了包中之后,则就会牵扯到包的导入问题,例如,现在要导入某一个包中的某些操作类,此时,就必须依靠import关键字完成。范例:定义如下的一个类
之后再定义一个Test.java程序,此程序定义在“org.lxh.demob”包中,并且要使用Message类,这个时候肯定要牵扯到导包的操作。
现在两个程序编写完成之后下面需要对程序进行编译,现在应该先编译Message.java,之后再编译Test.java,因为Test.java程序使用了Message.java,所以必须先将Message编译成*.class文件。
总结:关于public class和class声明类的区别
·public class声明类:文件名称必须与类名称保持一致,在一个*.java 文件之中只能定义一个public class,如果一个类希望被外包所访问,则使用public class;
·class声明类:文件名称可以与类名称不一致,但是运行的时候必须运行类名称,在一个*.java中可以定义多个,如果一个类只能被本包所访问,则使用class;
范例:修改Message.java类
但是这里面有一个问题了,以上是按照“包.类”的形式一个个导入的,如果现在要同时导入某一个包的多个类,那么按照以上的做法肯定要写多条导入语句,这样很麻烦,所以在java中专门提供了一个通配符“*”,表示自动导入所需要的操作类。
问题:如果现在使用“*”导入那么与单独导入一个类相比,是不是性能会差很多呢?
单独导入和使用*的形式导入在性能是一样的,因为java程序即使使用了*,也只会导入所需要的类,而不需要的类一概不导入。
但是在导包的操作中会存在一个比较麻烦的问题,就是有可能同时会导入相同类的不同包。
现在有两个Message类:org.lxh.demoa.Message、org.lxh.demox.Message,可是现在在Test.java中由于自身的需要,需要同时导入demoa和demox两个包。
此时两个包中都存在了Message类,所以,程序编译的时候将出现如下的问题:
在这种情况下,为了准确的知道要使用的是那一个类,所以在使用类的时候建议加上包的名称。
3.1.3、JDK 1.5的新特性——静态导入(理解)
如果现在假设一个包中的一个类都是由静态方法所组成的话,则按照最早的思路,肯定是要先导包,之后再通过“类.方法()”的形式调用类中的操作。