包(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  int  age=10;
}

public class Eaques
{
    public static void main(String[] args)
    {
        A a=new A();
        System.out.println(a.age);  //10
    }
}

不同包的继承类中访问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权限
    }
}
//package com.javakc.javaQ.servlet; // //import jakarta.servlet.ServletException; //import jakarta.servlet.annotation.WebServlet; //import jakarta.servlet.http.HttpServlet; //import jakarta.servlet.http.HttpServletRequest; //import jakarta.servlet.http.HttpServletResponse; // //import java.io.IOException; // ///** // * // */ //@WebServlet( // name = "ResponseServlet", // urlPatterns = "/response.do", // loadOnStartup = 0 //) // //public class ResponseServlet extends HttpServlet { // @Override // protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // // } //} package com.javakc.javaQ.servlet; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; @WebServlet( name = "ResponsvleteSer", urlPatterns = "/Sp.do" ) public class ResponseServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String type = req.getParameter("type"); String video = "E:\\学习\\javaQ\\javaQ\\src\\main\\webapp\\views\\yemian\\11.mp4"; Path p = Path.of(video ); byte[] b = Files.readAllBytes(p); resp.setContentType("video/mpeg4"); OutputStream ops = resp.getOutputStream(); System.out.println(b.length); if (type.equals("1")) { ops.write(b); ops.flush(); ops.close(); } if (type.equals("2")) { FileInputStream f=new FileInputStream(video ); byte[] b1=new byte[100]; int len=0; while ((len=f.read(b1))!=-1){ ops.write(b1,0,len); try { Thread.sleep(1); } catch (InterruptedException e) { throw new RuntimeException(e); } ops.flush(); } ops.close(); } } }
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值