1、同一编译单元内:
a、该类定义中,public protected private 均可以自由调用;
b、该类生成的对象,public、protected可以随意调用;
2、同一包内:
a、在类定义的同一包内,其它编译单元可以生成类的对象,并调用public、protect数据和方法,但不能调用private。不必通过import来导入,可以直接使用。如同1b;
3、不同包内:
a、导入方法:
import pakgeName.*;
或者具体到类所在的编译单元:
import pakgeName.className1;import pakgeName.className2;
b、
b1、类必须是public,否则其它单元中将不可见。
b2、每个类必须单独占有一个编译单元,文件名等于类名。
b3、类中允许有main函数,main()可以无参,可以不是static。
c、对于在其他编译单元中生成的类的对象,仅public变量和方法能被调用;
d、每个编译单元只能有一个public类(p121),因此无法将多个类定义在同一编译单元中,却提供给其他包中的类调用。
表格总结:
public | protected | private | |
类的定义 | Y | Y | Y |
同一编译单元中类生成的对象 | Y | Y | N |
本包 | Y | Y | N |
外部包 | Y | N | N |