程序项目代做,有需求私信(小程序、网站、爬虫、电路板设计、驱动、应用程序开发、毕设疑难问题处理等)

Java基础 -- 访问控制权限

一  包:库单元

假设我们存在两个类名相同的类,如果没有一定的措施对其进行区分,就会无法区别到底使用的是哪一个类。因此java引入了包来进行名字空间管理。

包(类库)包含有一组类,这些类在单一的名字空间之下被组织在了一起。例如在Java的标准发布中有一个工具库,它被组织在java.util名字空间之下。java.util中有一个叫做ArrayList的类,使用ArrayList的一种方式是用其全名java.util.ArrayList来指定。

1
2
3
4
5
6
public class FullQulification {
      public static void main(String[] args) {
        java.util.ArrayList list = new java.util.ArrayList();
        System.out.println("测试!");
    }
}

这样就会使的程序语句变长了,为此java中引入了import关键字进行了简化。

1
2
3
4
5
6
7
import java.util.ArrayList;
public class FullQulification {
      public static void main(String[] args) {
        ArrayList list = new ArrayList();
        System.out.println("测试!");
    }
}

假设我们自己也定义一个ArrayList类,为了和系统的ArrayList类区别开来,我们可以创建一个access.mypackage包,然后在该包下创建一个ArrayList类:

1
2
3
4
5
6
7
8
9
package access.mypackage;
 
public class ArrayList {
    public String toString() {
        return "ArrayList [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
                + "]";
    }  
     
}

 如果想使用自己定义的ArrayList类,只需要import access.mypackage.ArrayList即可。

1
2
3
4
5
6
7
import access.mypackage.ArrayList;
public class FullQulification {
      public static void main(String[] args) {
        ArrayList list = new ArrayList();
        System.out.println("测试!"+list.toString());
    }
}

 实际上java包的管理就是文件的管理,包access.mypackage对应的文件路径access/mypackage/。

.如果想引入别人写好的包,可以直接添加在当前项目src目录下,或者添加在环境变量CLASSPATH中指定的目录下。

二 Java访问权限修饰符

 访问控制权限,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键字)、private。在编写类库时,尽可能将一切方法都定为private,如果没有指定任意的访问权限,则意味着它是"包访问权限"。

1、包访问权限

如果一个类中的成员没有指定访问权限修饰符,则默认是包访问权限,即当前类所属的包中的所有其它类对该成员都有访问权限,但是包之外的所有类,这个成员却是private。

包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以轻松的相互作用。

2、public

使用public修饰的成员表示这个成员对每个类都是可用的。

创建一个access.dessert的包,在该包下创建一个Cookie类:

1
2
3
4
5
6
7
8
9
10
11
package access.dessert;
 
public class Cookie {
    public Cookie() {
        System.out.println("Cookie constructor!");
    }
    //默认包访问权限
    void bite() {
        System.out.println("bite!");
    }
}

 在默认包下面创建一个使用Cookie类的程序:

复制代码
import access.dessert.*;

public class Dinner {
    public static void main(String[] args) {
        Cookie x = new Cookie();
        //x.bite();    //无法访问,因为bit只向在access.dessert包中的类提供访问权限   
    }

}
复制代码

可以看到在默认包之中,无法访问bite()函数。

3、private

除了包含该成员的类之外,其他任何类都无法访问这个成员。

亲爱的读者和支持者们,自动博客加入了打赏功能,陆陆续续收到了各位老铁的打赏。在此,我想由衷地感谢每一位对我们博客的支持和打赏。你们的慷慨与支持,是我们前行的动力与源泉。

日期姓名金额
2023-09-06*源19
2023-09-11*朝科88
2023-09-21*号5
2023-09-16*真60
2023-10-26*通9.9
2023-11-04*慎0.66
2023-11-24*恩0.01
2023-12-30I*B1
2024-01-28*兴20
2024-02-01QYing20
2024-02-11*督6
2024-02-18一*x1
2024-02-20c*l18.88
2024-01-01*I5
2024-04-08*程150
2024-04-18*超20
2024-04-26.*V30
2024-05-08D*W5
2024-05-29*辉20
2024-05-30*雄10
2024-06-08*:10
2024-06-23小狮子666
2024-06-28*s6.66
2024-06-29*炼1
2024-06-30*!1
2024-07-08*方20
2024-07-18A*16.66
2024-07-31*北12
2024-08-13*基1
2024-08-23n*s2
2024-09-02*源50
2024-09-04*J2
2024-09-06*强8.8
2024-09-09*波1
2024-09-10*口1
2024-09-10*波1
2024-09-12*波10
2024-09-18*明1.68
2024-09-26B*h10
2024-09-3010
2024-10-02M*i1
2024-10-14*朋10
2024-10-22*海10
2024-10-23*南10
2024-10-26*节6.66
2024-10-27*o5
2024-10-28W*F6.66
2024-10-29R*n6.66
2024-11-02*球6
2024-11-021*鑫6.66
2024-11-25*沙5
2024-11-29C*n2.88
posted @   大奥特曼打小怪兽  阅读(357)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
如果有任何技术小问题,欢迎大家交流沟通,共同进步

公告 & 打赏

>>

欢迎打赏支持我 ^_^

最新公告

程序项目代做,有需求私信(小程序、网站、爬虫、电路板设计、驱动、应用程序开发、毕设疑难问题处理等)。

了解更多

点击右上角即可分享
微信分享提示