首页 > 代码库 > java基础之包

java基础之包

包(package)
  >>对文件进行分类管理
  >>给类提供多层命名空间
  >>写在程序文件的第一行
  >>包类的全程 包名.类名
  >>包也是一种封装形式
——————————————————————————————————————
1.名字必须要是全小写
2.包必须在第一行
自动生成包
   >>.代表是当前目录命令
   >>javac -d . 类名
     java 包名.类名
存放在其他地方下的包目录 (包的出现,可以将类文件class文件和程序文件.java)
   >> java -d c:\myclass  类名
   >> set classpath=c:\myclass
   >>java 包名.类名

——————————————————————————————————————
总结
  >>不同包中的包之间进行访问,被访问的包中的类以及类中的成员(方法),需要public修饰
   packsge pack;
         public class PackDemo{
                public static void main(String args[]){
                       packa.DemoA a=new packa.DemonA();
                       a.show();
                }  
     
         }

**************************************************************************************
   package packa;
         public class DemoA{
               public static void main(String args[]){
                     public void show(){System.out.print("DemoA runing );}
               }
         }
_______________________________________________________________________________________
包的结构图
  >>c:\myclass\pack\PackDemo.class
  >>c:\myclass\packa\DemoA.class
包树状流程图
   |--myclass
      |--pack
         |--PackDemo.class
      |--packa
         |--DemoA.class
编译流程
   set classpath=c:\myclass  
   javac -d c:\myclass DemoA.java
   javac -d c:\myclass PackDemo.java
   java   pack.PackDemo
编译结果:
 DemoA runing
__________________________________________________________________________________________
包与包之间可能会发生的错误由以下几个原因:
   1.发生软件包不存在的情况
       如:在myclass包中找不到packa包,这时候我们需要设置临时的classpath
       >>set classpath=c:\myclass  
         包树状流程图
            |--myclass
               |--pack
                  |--PackDemo.class
               |--packa
                  |--DemoA.class
_____________________________________________________________________________________________

    2.类以类之间采用默认的权限protected,导致不同的包里的被访问的类以及其成员(例如show())不能进行访问(这里使用不同的包时候要用import关键字导入相应的包)
     class PackDemo
     class DemoA
     show()
     在进行编译PackDemo的时候,
                会产生找不到符号
                         符号 :类 DemoA
                         位置 :类 pack.DemoA
      错误的原因是:类名写错了,应该采取包名.类名的形式(这里也可以是以使用import关键字导入相应的包名,这样就可以不用写包名.类名的形式)
               在PackDemo创建的DemoA不再同一个包中,这时候,我们就要用包.类名的方式(这个也说明了包具有封装数据的特性)
_______________________________________________________________________________________________________________________
                                    
  >>不同的包中的子类可以访问父类中被protected权限修饰的成员
     说明:如我们的例子,代码如下,我们可以看到DemoA 继承了DemoB,在PackDemo调用DemoA时候,因为DemoA继承于DemoB

   packsge pack;
         public class PackDemo{
                public static void main(String args[]){
                       packa.DemoA a=new packa.DemonA();
                       a.show();
                }  
     
         }


   package packa;
         public class DemoA enxtends DemoB{
               public static void main(String args[]){
                     public void show(){System.out.print("DemoA runing );}
                     method();
               }
         }

   package  packb
         public class DemoB{
               public static void main(String args[]
                     public void method(){System.out.print(("DemoB runing");}
               }
         }

包的结构图
  >>c:\myclass\pack\PackDemo.class
  >>c:\myclass\packa\DemoA.class
  >>c:\myclass\packb\DemoB.class
包树状流程图
   |--myclass
      |--pack
         |--PackDemo.class
      |--packa
         |--DemoA.class
      |--packb
         |--DemoB.class
编译流程
   set classpath=c:\myclass  
   javac -d c:\myclass DemoA.java
   javac -d c:\myclass DemoB.java
   javac -d c:\myclass PackDemo.java
   java   pack.PackDemo
编译结果:
 DemoA runing
 DemoB runing

______________________________________________________________________________________________________________________

java基础之包