上季内容回顾:
异常的捕获与处理
本季主要知识点:
包与访问权限
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限
包的产生原因:在开发中所有的程序肯定要提交到服务器上去。
  张三:--> A.class --> 服务器
  李四:--> A.class -------|
根本原因在于一个文件夹下不能有重名的文件,包其实就是一个文件夹,每个文件夹下可以有相同类文件。
包的使用
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_02
在程序中使用package进行包的定义。
文件夹需要用户自己手工建立吗?
  肯定不需要,因为如果用户自己建立,则以后很麻烦
最好可以根据package定义的格式自动生成包(文件夹)
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_03
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_04
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_05  
javac -d . Demo01.java 
·-d:表示生成文件夹,文件夹的名字就是以package中定义的名字为准。 
·.:表示在当前所在的文件夹下生成此包.类
如何去访问包中的程序呢? 
之前的运行:java 类名称
打包后的运行:java 包.类名称
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_06
例如:现在定义两类(包.类名称)
  ·  org.redking.demo01.Demo --> 有一个打印“Hello World”的方法
  ·  org.redking.demo02.Demo02 --> 访问org.redking.demo01.Demo类中的方法,打印输出
Demo.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_07
Demo02.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_08
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_09
编译之后发生了以下错误:
Demo02.java:3: org.redking.demo01.Demo 在 org.redking.demo01 中不是公共的;无法从外部软件包中对其进行访问
import org.redking.demo01.Demo;
                          ^
Demo02.java:6: 找不到符号
符号: 类 Demo
位置: 类 org.redking.demo02.Demo02
                new Demo().print();
                    ^
2 错误
如果一个类想要被外包所访问,则此类一定要声明成public class,即:文件名称要与类名称一致。
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_10
我们再重新编译下哈~成功编译及执行哈~
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_11
如果想一次编译多个文件可以使用javac -d . *.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_12
问题:
  你现在导入的只有一个类,是按以下格式写的:
   import org.redking.demo01.Demo ;
  那么如果我现在要导入多个类的时候,这样导入会不会太多了呢?
如果假设现在需要导入一个包的很多类,则可以使用“*”来表示。
  import  包.*   --> 导入
  如果现在使用的是导入“*” ,性能上会不会有问题?
  使用导入“*”和分别导入各个类本质上没有任何的区别。因为java程序会自动找到所需要的类进行加载,不用的类,是不会加载的。
再看:
  假如说现在有一个Demo03 的类,里面需要导入org.redking.demoa1.A 类,也需要导入org.redking.demoa2.A类时会怎么样?
A.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_13
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_14
A.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_15
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_14
生成了两个包里面都有A.class
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_17
Demo03.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_18
现在Demo03中导入了两个包中的A类,程序会怎样执行呢?编译出错了哈~
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_19
当一个类中导入了两个同名但不同包的类的时候,在访问时最好加入完整的包.类名称。
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_20
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_21
注意点:
  在程序中始终不会有没有包的类,即:只要是类绝对要放在包里。
那么如果所有的类都放在包里了,那么现在如果需要把一套类交给其他客户的时候肯定是不能把所有*.class文件散着给出去,往往会把这些的*.class文件压缩成一个包——jar包,把jar包给用户。
如果要把一个类打成*.jar包,则可以借助于jar命令。
Person.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_22
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_23
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_24 
jar打包
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_25
出现my.jar文件哈~~~
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_26
我们可以使用winrar软件打开my.jar文件
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_27
现在有了my.jar,我们把org.redking.test包的文件夹删掉哈~
现在my.jar怎么使用呢?我们再写一个DemoPerson.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_28
现在我们编译DemoPerson.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_29 
提示找不到Person类哈,但是Person类已经在my.jar包了哈~
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_30 
如果是一个jar包,则必须指定classpath。
set classpath=E:\java\oo9\my.jar
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_31
需要指定两个classpath
set classpath=.;E:\java\oo9\my.jar
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_32
这就是jar包的使用哈~~~
如果觉得程序需要的很多*.jar包非常麻烦,则可以直接在我的电脑 --> 高级 --> classpath进行设置。
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_33
常见的包
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_34
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_35
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_36
提供了大量的类库,类库中是按照包的形式存放的。
JDK 1.5版本,所以此包会自动导入,JDK 1.0的时候需要手工导入。
GUI设计包:java.awt、javax.swing --> JAVA 2
Applet程序是在网页上运行的小程序,是JAVA的最古老原形,但是现在基本上也已经不再使用了。
Applet --> 垃圾 --> 程序是一个发展过程。EJB--> 垃圾 --> 理论很有价值
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_37
现在我们编译此Applet程序
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_38
需要编写html代码才可以运行applet程序
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_39
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_JAVA_40
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_41
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_42
访问控制
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_43
Person01.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_44
Demo04.java
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_45
在同一包下可以进行访问
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_46
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_47
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_48
这时我们可以编写一个Stu子类
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_49
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_访问权限_50
匿名内部类:Spring中使用的非常多
  |- 但它是在抽象类和接口的基础上发展的。
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_51
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_52
以上代码中已经明确的定义出了子类 —— X类
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_面向对象_53
这就叫匿名内部类哈~~~
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_jar_54
本季重点
[零基础学JAVA]Java SE面向对象部分-21.包及访问权限_零基础学JAVA_55
##############################################################
ps:下季进行JAVA SE应用哈~~~
##############################################################