1.同包之间类的相互访问
同包之间的类除了私有成员都可以相互访问。
可以不使用完整类名。
2.不同包之间类的相互访问
不同包之间两个没有关系的类(没有继承关系)只能访问另一个包中公有类的公有成员。
如果没有导入该类,则要使用完整类名。
公有类可以在另一个类中定义该类的对象,但成员能不能访问还要看成员是否公有。(类的公有的则能定义类对象,但使用类方法还需看方法是否公有)
//文件名:A.java
package zhangsan;
public class A //只有public类才能被不同包中的其他类访问
{
public void show() //只有public方法才能被不同包中的其他类访问
{
System.out.println("嘿嘿");
}
}
//文件名:Test.java
package lisi;
class Test
{
public static void main(String[] args)
{
zhangsan.A a1 = new zhangsan.A();//未导入该类则需使用完整类名
a1.show(); //如果show方法不是公有,则这里使用show方法会报错
}
}
输出结果:
javac -d. A.java Test.java
java lisi.Test
嘿嘿
3.不同包的访问访问方式(三种方法)
- 使用完整类名。
//文件名:Test.java
package lisi;
class Test
{
public static void main(String[] args)
{
zhangsan.A a1 = new zhangsan.A();//未导入类A则需使用完整类名
a1.show();
}
}
- 使用import导入一个包中的所有的类。
//文件名:Test.java
package lisi;
import zhangsan.*; //*号表示zhangsan这个包中的所有类
class Test
{
public static void main(String[] args)
{
A a1 = new A();//导入了zhangsan这个包中的所有类
a1.show();
}
}
- 使用import导入一个包中特定的类。
//文件名:Test.java
package lisi;
import zhangsan.A; //导入zhangsan包中的类A
class Test
{
public static void main(String[] args)
{
A a1 = new A();//导入了zhangsan这个包中的所有类
a1.show();
}
}