java-包与包之间的访问

 1 package face_package;
 2 
 3 import face_packagedemoA.DemoA;
 4 
 5 /* 包(package)
 6  * 1,对类文件进行分类管理。
 7  * 2,给类提供多层命名(名称)空间
 8  * 3,写在程序文件的第一行。
 9  * 4,类名的全称是包名.类名
10  * 5,包也是一种封装形式。
11  * 命令行 -d指定存放生成的类文件的位置
12  * 除了手动创建文件夹包名,将类文件放入
13  * javac -d . PackageDemo.java      .指的当前目录
14  * package face_package.ss.asda.fas 可以多层包名
15  */
16 public class PackageDemo {
17     public static void main(String[] args) {
18         face_packagedemoA.DemoA d = new face_packagedemoA.DemoA();
19         d.show();
20         face_packagedemoB.DemoB b = new face_packagedemoB.DemoB();
21         b.method();
22         System.out.println("Hello Package!");
23     }
24 }
25 
26 /*
27  * PackageDemo.java:8:找不到符号
28  * 符号: 类DemoA
29  * 位置: 类mypack.PackageDemo
30  *              DemoA d = new DemoA();
31  * PackageDemo.java:8:找不到符号
32  * 符号: 类DemoA
33  * 位置: 类mypack.PackageDemo
34  *              DemoA d = new DemoA();
35  * 2错误
36  * 
37  * 原因:类名写错。
38  * 因为DemoA类已经有包的所属,所以必须要明确其包名。
39  * 记住:DemoA这个名是错的。正确名称是包名.类名 packa.DemoA
40  * 
41  * PackageDemo.java:8:软件包不存在
42  *                 pack.DemoA d = new packa.DemoA();
43  * PackageDemo.java:8:软件包不存在
44  *                 pack.DemoA d = new packa.DemoA();                
45  * 
46  * 2错误
47  * 原因是在当前目录下没找到,因为packa存放在其它目录下,
48  * 应该配置一个classpath
49  * 
50  * --------------------------
51  * PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进行访问
52  *                 pack.DemoA d = new packa.DemoA(); 
53  * PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进行访问
54  *                 pack.DemoA d = new packa.DemoA();       
55  * 
56  * 2错误
57  * 包相当于把类封装了 类前不加public权限无法获取到,默认权限也属于被封装。
58  * -----------------------------------
59  * 
60  * PackageDemo.java:9: show() 在 packa.DemoA 中不是公共的;无法从外部软件包中对其进行访问
61  *               d.show();
62  *               
63  * 1错误
64  * 
65  * 总结:
66  * 包与包之间的类进行访问,被访问包中的类必须是public,被访问的包中的类的方法也必须是public的。
67  * 
68  *         public        protected         default           private
69  * 同一类中    ok              ok              ok                 ok
70  * 同一包中    ok              ok              ok                 
71  * 子类中      ok              ok
72  * 不同包中     ok
73  *
74  *   
75  */
View Code
1 package face_packagedemoA;
2 
3 public class DemoA extends face_packagedemoB.DemoB{
4      public void show() {
5          method();
6          System.out.println("demo show run");
7      }
8 }
View Code
1 package face_packagedemoB;
2 
3 public class DemoB {
4     /*public*/protected/*保护*/ void method() {
5         System.out.println("DemoB method run");
6     }
7 }
8 //只有继承了我才能使用我的功能,其它类无法访问我的功能。protected
View Code

 

posted @ 2021-10-07 22:42  doremi429  阅读(31)  评论(0)    收藏  举报