包(package/import/protected)

什么是包?
因为在同一文件夹中,不能出现同名文件,包的出现是避免同名文件问题,就是定义不同的包,在不同的包可存在相同的文件夹。包的本质是文件夹。包的存在是为了更好的管理文件。
简单定义一个包:

package www.code;
public class Pack
{
    public static void main(String[] args)
    {
        System.out.println("hello day");
    }
}

打包编译命令 :javac -d . Pack.java,在编译后,会在当前目录下生成一个文件夹www,在www下会有一个文件夹code,code文件夹下有Pack.class二进制文件。
-d 表示生成目录,根据package定义生成;
. 表示在当前所在目录生成子目录。
在执行时:java www.code.Pack(需要加上包即告诉编译器在哪儿找文件)
包的导入(import):

//定义一个包
package www.code.me;
public class Message
{
    public void func()
    {
        System.out.println("Message 类");
    }
}

在主类中导入上面的包:

//包的定义:
package www.code;
import www.code.me.Message;  //包的导入
public class Pack
{
    public static void main(String[] args)
    {
        Message message =new Message();
        message.func(); //Message类
    }
}

多个包的自动匹配编译顺序:在当前目录下按照主类的使用情况自动编译。
对于有多个包编译:javac -d . ./*.java
执行:java www.code.Pack

系统常用包:

  • java.lang : 系统常用基础类(String类、Object类、包装类),JDK1.1之后自动导入
  • java.util : Java 提供的工具程序包(集合类,ArrayList ,HashMap),需要手动导入
  • juc : java.util,concurrent :并发程序包

访问控制权限:
private < default < protected < public
default是默认权限即什么都不写,包访问权限:仅供在同一包下类访问
protected : 继承访问权限,有继承关系的类可以访问。
在这里插入图片描述
关于protected:

//protected 属性在同一包的子类可以访问
class A
{
    protected static int  age=10;
}

public class Test extends A
{
    public static void main(String[] args)
    {
       System.out.println(age);  //子类访问父类的protected权限 ,另外静态方法访问属性时,属性必须是static
    }
}

不同包的继承类中访问protected属性:

package www.code.me;
public class Message
{
    protected int age=10;
    public void func()
    {
        System.out.println("Message 类");
    }
}

定义另外一个包进行继承Message类:

package www.code;
import www.code.me.Message;  //包的导入

public class Pack extends Message 
{
    public static void main(String[] args)
    {
        Message message =new Message();
        message.func(); //Message类
        System.out.println(new Pack().age); //10  在不同包的子类中访问protected权限
    }
}

猜你喜欢

转载自blog.csdn.net/sophia__yu/article/details/83545200