java基础(包的访问权限)

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();
    }
}

你可能感兴趣的:(java基础(包的访问权限))