黑马程序员_Java面向对象_包

7.包

7.1包(package)

  • 对类文件进行分类管理。
  • 给类提供多层命名空间。
  • 写在程序文件的第一行。
  • 类名的全称是:包名.类名。
  • 包也是一种封装形式。

利用命令行自动生成文件夹格式:D:\java0217\day10\javac -d . PackageDemo.java

"-d":指定这个包所存放的位置。

".":代表当前目录。可以不指定当前。

一般写项目必须先写包再写类,因为写项目有N多类组成,必须进行有效的区分,代表着每组类不同的功能。

以前没有写是因为使用了Java中默认的包机制,只要在当前目录下没有指定包,Java就把当前目录作为默认包存在。

包的出现可以让类文件(源文件)和运行文件相分离。好处在于,只要把运行文件拷给对方就能用了。没有必要给源文件。

当想要使用包中的一个类的时候,classpath只要指向包的父目录即可。

包与包之间的访问

1、当调用其他包的类使,类的全名是:包名.类名

2、packa包不在当前目录下,需要设置classpath告诉JVM去哪里找指定事物packa包。

3、有了包范围变大,一个包中的类要被访问,必须要有足够大的权限。所以要被public修饰。

4、类共有后,被访问的成员也要共有,才可以被访问。

总结:

1、包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。

2、不同包中的子类还可以直接访问父类中被protected权限修饰的成员。  

包与包之间可以使用的权限只有两种:public ,protected。

  public protected default private
同一个类中 OK OK OK OK
同一个包中 OK OK OK  
子类 OK OK    
不同包中 OK      

 

 

 导入import

为了简化类名的书写,使用一个关键字,import。

import导入的是包中的类。

import packb.haha.hehe.heihei.Democ;//导入Demo类,不必在本类中packb.haha.hehe.heihei.Democ c = new packb.haha.hehe.heihei.Democ

import packb.haha.hehe.heihei.*  //*代表把heihei里所有的类导进来。建议一般情况下不用通配符*,需要用到包中的哪个类,就导入哪个类。

 

c:\myclass\packb\DemoA.class

c:\myclass\packb\heihei\DemoZ.class

import packb.*//导入的仅仅是packb中所有的类。

import packb.heihei.*//导入的是heihei包中所有的类。

 

当导入不同包中的类,出现重名的情况,必须加包名。packb.haha.hehe.heihei.Democ c = new packb.haha.hehe.heihei.Democ

建议定义包名不要重复,可以使用url 来定义,url是唯一的。

 

你可能感兴趣的:(java)