包(package)是类的容器。用来保存划分类名空间。
逻辑意义对类进行划分。
解决同名的类的冲突问题。
2:package的命名规范:
A:package必须写在源文件的第一行。
B:package名一律使用小写。
C:(建议)package使用公司的域名倒过来。
www.demo.com
com.demo.项目名称.模块名称
3:包在逻辑上是以命名空间划分的。
在物理上是以文件系统路径划分的。
com.demo.one
将类编译好后,要将编译好的类放到com/demo/one这个目录以下
执行
java com.demo.one.类名;
4:javac -d选项的作用
-d:指定类文件(class) 存放的位置。
javac -d ./ Test_03.java
带package的类与classpath怎样执行
C:/>java -classpath F:\aa.bb.cc.dd.ee.Test_03
包的导入(import)
同一个包底下的类能够相互调用。
不同的包底下的类,须要用到还有一个包底下的类时,须要使用
importkeyword导入所须要的类路径。
5.有名包与无包名訪问的问题:
无名包底下的类能够訪问有名包底下的类。
有名包底下的类不能够訪问无名包底下的类。
6.訪问权限
private:同一个类中的訪问权限。其他的类都不能訪问用private修饰
的方法和属性。
default:同一个包以下的类都能够訪问。不同包是无法訪问使用默认
default以下类。
protected:同一个包以下的类都能够訪问。不同包是无法訪问,可是在不
同包以下,是该类的子类就能够訪问protected修饰的变量和方法。
package aa.bb.cc.dd.ee;public class Test_03
{public static void main(String args[]){System.out.println("Test_03");}
}
package com.testdog;
public class Dog{private int dogid;protected String dogName;int getDogid(){return this.dogid;}void setDogid(int dogid){this.dogid = dogid;}protected void setDogName(String dogName){this.dogName = dogName;}
}
package com.testprotected;
import com.testdog.Dog;public class TestProtected extends Dog{public static void main(String args[]){TestProtected dog = new TestProtected();dog.setDogName("test");System.out.println(dog.dogName);}
}