【Java|基础篇】包和访问权限修饰符

简介: 包和访问权限修饰符是Java中两个常用的概念,它们都与访问控制有关.

1. 前言

包和访问权限修饰符是Java中两个常用的概念,它们都与访问控制有关.


2. 包的概念

在面向对象体系中,提出了一个软件包的概念,即:为了更好的管理类,把多个类收集在一起成为一组,称为软件包。Java中的包(Package)是一种用于组织类、接口、枚举等Java元素的机制。它被设计用于解决Java开发中的命名冲突问题和代码组织问题。Java中的包可以包含其他包、类、接口、枚举和注释等元素。有点类似于目录。


3. 包的创建以及优点

在IDEA中,可以右键src,选择new,然后点击里面的Package.输入包名即可创建包.

image.png


image.png

我这里创建好了两个包,一个是test1,一个是test2.

image.png

我在这两个包中,同时创建了两个Student类,但是没有报错.

image.png

这说明在不同的包中类名是可以相同的.因此包可以防止类名和其他标识符的冲突

image.png

通过上面的文件命名也可以看出来.

接下来我们如果要使用Student类时,就需要选择是哪个包中的Student类,注意别导错了哦

image.png


包的优点:


命名空间管理:包提供了命名空间的概念,可以防止类名和其他标识符的冲突,从而使得代码更加规范、易于管理。

访问控制:包可以通过访问权限修饰符控制其中的类、方法、变量等成员的访问权限,提高了程序的安全性和可维护性。

代码组织:包可以按照功能或模块组织代码,使得代码更加清晰、易于维护。

封装:包可以将一些实现细节隐藏在包中,只向外部提供公共的接口,从而实现了封装的概念。

命名空间管理相比大家通过上面的例子也能够理解了. 代码组织就把功能相关的类的放在同一个包中.可以用文件夹的概念来理解,例如我创建了一个名为编程的文件夹,在这个文件夹中我就去放编程相关的东西,例如各种语言的IDE之类的.包也是如此.

访问控制和封装会在下面的访问权限修饰符中进行讲解.


4. 访问权限修饰符

Java中的访问权限修饰符一共有4种,private,默认(空着不写),protected,public.作用范围:private<默认


修饰符 同一个类中 同一个包中的其它类 不同包下的子类 不同包下的无关类(任何地方)

private √ × × ×

空着不写 √ √ × ×

protected √ √ √ ×

public √ √ √ √

√表示可以访问,×表示不能访问

接下来我会一个一个进行解释:

先看下面这个类,位于test1这个包中:


public class Student {
    private String id;
    String name;
    protected int age;
    public String sex;
}


image.pngimage.png

image.png

首先是在当前类中访问它的成员变量,可以看到都能够成功访问到.

image.png

接下来在test1这个包下面创建Main这个类,在这个类中对Studnt类的成员变量进行访问

image.png


image.png

可以看到除了private修饰的id,其它的成员变量均可进行访问. 如果是在当前类中是可以进行访问的,这也验证了private表示该成员只能被定义它的类访问,其他任何类都无法访问。而默认权限修饰符,protected和public是可以的


接下来验证空着不写(默认)的访问权限,只需验证在不同包下的子类中不能访问即可.

在test2这个包中,创建Test类让它继承Student这个类.

image.png

通过Test这个类去访问Student的成员变量,可以看到name属性是无法被访问的.而name是被默认的访问权限修饰符修饰的.因此无法访问. 这验证了 默认权限修饰符无法在不同包下的子类中进行访问(大于这个范围也无法访问),而protected和public是可以的


最后来验证一下protected和public.

在test2这个包中创建Test2这个类,直接在Test2的main方法中创建Student对象,进行访问成员变量.可以看到只能访问public修饰的成员变量.

image.png

protect不能在不同包下的无关类中进行访问,而public在任何地方都可以进行访问

因此作用范围:private<默认

梅开二度,再看一下这张表格,因为十分重要,要记住各个访问权限修饰符的访问范围.


修饰符 同一个类中 同一个包中的其它类 不同包下的子类 不同包下的无关类(任何地方)

private √ × × ×

空着不写 √ √ × ×

protected √ √ √ ×

public √ √ √ √


5. 总结


在Java开发中,包和访问权限修饰符通常是一起使用的。使用包可以避免命名冲突和提高代码组织性,使用访问权限修饰符可以控制成员的访问权限,提高程序的安全性和可维护性。



相关文章
|
29天前
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
31 1
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
50 3
|
1月前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
56 2
|
2月前
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
40 2
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
2月前
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
47 2
|
2月前
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
29 1
|
2月前
|
存储 Java
深入理解java对象的访问定位
这篇文章深入探讨了Java对象的访问定位机制,比较了使用句柄和直接指针两种主流的对象访问方式,并指出了它们各自的优势,例如句柄访问在对象移动时的稳定性和直接指针访问的速度优势。
35 0
深入理解java对象的访问定位
|
3月前
|
Java API 数据处理
Java 包(package)的作用详解
在 Java 中,包(package)用于组织和管理类与接口,具有多项关键作用:1)系统化组织代码,便于理解和维护;2)提供命名空间,避免类名冲突;3)支持访问控制,如 public、protected、默认和 private,增强封装性;4)提升代码可维护性,实现模块化开发;5)简化导入机制,使代码更简洁;6)促进模块化编程,提高代码重用率;7)管理第三方库,避免命名冲突;8)支持 API 设计,便于功能调用;9)配合自动化构建工具,优化项目管理;10)促进团队协作,明确模块归属。合理运用包能显著提升代码质量和开发效率。
160 4
|
3月前
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
170 2