Java包与访问修饰符

先来谈一下为什么要有包;
假如在一个公司里强子和小刚共同做一个项目,可它们都想创建名为Dog的类,因为在同一文件中类名不能相同,那Dog类谁用呢?
为了解决这种问题就有了包这种概念,在不同包里都可以有Dog类,即类名可以相同。

JAVA包

1. 包的介绍
  • . 包的作用:
    ①区分相同的类
    ②类很多的时候,更好地管理类
    ③控制访问范围

  • . 语法:package com.cxdedu
    package是关键字,表示打包 com.cxdedu:表示包名

  • . 引入包:格式:import 包
    且有 import java.util.Scanner;表示只引入一个Scanner类
    而 import java.util.*;表示将java.util包所有类都引入(最好是需要那个引入那个,少用 *引入)

  • . 使用细节:
    ①package 的作用是声明当前类所在的包,需要放在类(或文件)的最上面,一个类最多只有一个package
    ②import指令 位置放在package的下面,在类定义前面,可以有多句且没有顺序要求

例:

package com.hspedu.pkg;//声明类位置的包

import java.util.Arrays;//引入系统自带的 util包的 Arrays类此类可以实现数组的排序
import java.util.Scanner;//放在类定义前面且无顺序要求

public class PkgDetail {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] arr = {0,8,-1,9};
        Arrays.sort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }
}

运行:(这里不再是控制面板,我用的IDEA)
在这里插入图片描述
注意:其实包的本质实际上就是 创建不同的文件夹/目录来保存文件;然后通过 import + 包名 引用其他包里的类(类里有我们需要的成员方法或属性)

2. 包的命名
  • 规则:只能包含数字、字母、下划线、小圆点,但不能用数字开头、不能是关键字或保留字
  • 规范:一般是小写字母 + 小圆点
    通常为:com.公司名.项目名.企业模块名 ; 如:com.cxd.javalearn.package //命名正确
    com.cxd.class.package //错误有class关键字
  • 其中,每次出现 . 就是分了一级,就像文件夹/目录 包含了新的文件夹/目录 ;像这样com.hspedu.pkg的包
    长这样:
    在这里插入图片描述
    解释一下:这里的src是IDEA放源代码的位置,modifier是与pak同级别的包全称是com.hspedu.modifier;pkg下的三个文件则是包里含有的类
  • 介绍四个常用的包:

java.lang.* ; lang包是基本包,默认引入,不需要再引入
java.util.* ; util包,系统提供的工具包,工具类,键盘输入Scanner类就在此包中
java.net.* ; 网络包,网络开发
java.awt.* ; 是做java的界面开发,GUI

访问修饰符

先介绍这四个:

  • . 访问范围:
访问类别访问修饰符同类同包子类不同包
公开public
受保护protected×
默认没有访问修饰符××
私有private×××
  • . 修饰符可以用来修饰类中的属性,成员方法以及类

  • . 只有 默认和public 才能修饰类,并遵循访问范围

  • . 成员方法的访问规则和属性完全一样

用几个案例证实一下访问范围
首先层级:
在这里插入图片描述
modifilerb包的A类:

package com.hspedu.modifier;

public class A {
    public int n1 = 100;
    protected int n2 = 200;
    int n3 = 300;
    private int n4 = 400;

    public void m1() {
    	//同类都可访问
        System.out.println(n1 + "\t" + n2 + "\t" + n3 + "\t" + n4);
    }
}

modifilerb包的Test类:

package com.hspedu.modifier;

public class Test {
    public static void main(String[] args) {
        A a = new A();//同类四种修饰符都可访问
        a.m1();
        System.out.println(a.n1 + " " + a.n2 + " " + a.n3);//同包private不能访问
    }
}

pkg包的Test类:

package com.hspedu.pkg;

import com.hspedu.modifier.A;

public class Test {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.n1);//不同包默认,protected, private不能访问
    }
}

我就不运行了,希望能帮大家理解到包的作用以及包的用法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值