public Vs. private Keyword in Java2025年3月26日 | 6分钟阅读 在 Java 中,public 和 private 是关键字,它们被称为访问修饰符或说明符。它们限制了类、构造函数、变量、方法和数据成员的范围或可访问性。这取决于它们应用于哪个。Java 提供了四种类型的访问修饰符:public、private、protected 和 default。但在本节中,我们将只讨论 public 和 private,并附带示例讨论 public 和 private 访问说明符之间的区别。 在 Java 中,public 访问修饰符允许从任何其他类访问类、构造函数、方法和变量。它具有最广的范围,可以在同一包内的任何位置或任何其他包中访问。另一方面,private 访问修饰符仅限于在同一类内访问。它确保成员(方法、变量等)只能被同一类的其他成员访问。 访问修饰符控制其他类是否可以使用特定字段或调用特定方法。Java 提供了两个级别的访问控制:
下表显示了 public 和 private 修饰符允许的成员访问级别。 ![]() 仍然不清楚两者之间的区别?让我向您展示一张图,它演示了访问级别如何影响可见性。下图显示了两个包 p1 和 p2。每个包包含两个类 Demo1 和 Demo2(在包 p1 中),以及 Demo3 和 Demo4(在包 p2 中)。 ![]() 下表描述了如果我们逐个使类成为 public 和 private,类的可见性。在上图中,Demo1 是唯一对所有访问修饰符都可见的类。 ![]() 让我们详细讨论一下。 Public 访问修饰符Java 中的顶级类可以被指定为 public,从而允许从程序中的任何其他类访问,无论它们是否在同一包中。此功能使其他程序组件可以轻松访问和使用类,这对于构建可重用组件或库特别有帮助。此外,为了方便在项目中查找和识别类,包含 public 类的 Java 文件名必须与 public 类的名称相对应。Public 成员可以被子类继承和覆盖,从而允许扩展和自定义功能。 让我们使用 private 访问说明符在Java 程序中更好地理解。 Demo1.java Demo2.java 输出 Javatpoint 解释 提供的代码由两个 Java 类 Demo1 和 Demo2 组成,它们分别属于不同的包 p1 和 p2。Demo1.java 中的 public 类 Demo1 有一个 display() 方法,该方法将“Javatpoint”输出到控制台。由于 show() 方法是 public 的,因此该方法所在的类以外的类可以访问它。Demo2.java 中有一个名为 Demo2 的类,其中包含一个 main() 函数。在 main() 中创建了一个 Demo1 实例,并调用了它的 show() 函数。Demo1 的 public 访问限定符使其即使在不同包(p1)中也具有可访问性。这说明了 public 访问修饰符如何通过使成员跨包访问更容易来促进代码的模块化和可重用性。 Private 访问修饰符它与 public 修饰符相反。可以通过使用 private 关键字后跟类名(仅应用于嵌套类)或方法名或数据成员来指定。我们不能将 private 访问说明符用于顶级类或接口。声明为 private 的变量、方法和类只能在声明它们的类中访问,或者通过继承父类来访问。它是 Java 中限制最严格的访问说明符。它是封装的最高形式。 Private 成员不能被继承或覆盖,从而加强了类本身内部实现细节的封装。私有构造函数限制了从类范围外部实例化类的能力。当希望在整个程序中只有一个类的实例时,例如单例模式,通常会采用这种方法来设计模式。由于其他类无法直接创建类的实例,因此当构造函数私有时,会坚持单例要求。 此外,由于它们可以防止意外实例化并鼓励使用静态方法进行功能访问,因此在实例化不必要或不希望发生时,可以在实用类中使用私有构造函数。 让我们使用 private 访问说明符在 Java 程序中更好地理解。 在下面的示例中,我们声明了两个类:Demo1 和 Demo2。在 Demo1 类中,我们将 show() 方法声明为 private。Demo2 类包含 main() 方法,我们在其中创建了 Demo1 类的对象。之后,我们尝试从 Demo2 类访问 Demo1 类的私有方法,这是不可能的。但我们仍然会执行程序来看它会显示什么错误。 Demo2.java 输出 ![]() Java 中 Public 和 Private 访问说明符的区别
public 和 private 修饰符之间的主要区别在于它们的可见性。Java 将类成员的可见性分为以下几类:
![]() 我们应该使用哪一个?如果我们希望方法或属性从任何地方可见,包括其他类和对象实例,我们应该使用 public 访问修饰符。如果我们希望方法或属性仅在其自身类中可见,则使用 private 访问修饰符。除了常量之外,避免使用 public 字段。 选择 public 和 private 访问修饰符取决于类内或类之间方法和属性的预期可见性和用法。
结论总之,构建可靠且可维护的软件系统需要了解 Java 中 public 和 private 访问修饰符之间的区别。Public 访问鼓励了广泛的可访问性,使得代码重用以及包和类的兼容性更加容易。然而,如果应用不当,可能会导致封装违反。相反,Private 访问提供了对可访问性的严格控制,将用户限制在声明它们的类中,并保护了实现细节。 通过使用 private 访问,开发人员可以强制执行封装,阻止未经授权的访问或更改,并鼓励更清晰、更模块化的代码。访问修饰符的有效使用对于开发组织良好且可扩展的 Java 应用程序至关重要,同时考虑可见性、继承和封装等方面。 |
数字图像分析和计算机视觉都严重依赖于图像处理。为了获得预期的结果,这需要图像的修改。Java 有许多功能强大且特性丰富的库。使用它们,我们可以操纵图像。图像方向的操纵...
阅读 6 分钟
Java 中有一个内置函数称为 DoubleAdder.intValue(),它遵循窄化原始转换,返回 sum() 的 int 值。该类对象的初始值为零。语法:public int intValue() 参数:此方法没有任何参数。返回...
阅读 3 分钟
给定项数n,求级数0.6, 0.06, 0.006, 0.0006,...的前n项和。输入:n=4 输出:0.6666 解释:级数前4项和:0.6+0.06+0.006+0.0006= 0.66660 输入:n=5 输出:0.66666 解释:级数前5项和:0.6+0.06+0.006+0.0006+0.00006=0.66666 方法:使用等比数列公式...
阅读 6 分钟
Java 提供了两种创建线程的方法:一种是实现 Runnable 接口,另一种是继承 Thread 类。然而,实现 Runnable 接口的一个重要缺失功能是,线程无法在…时返回某个值。
阅读 4 分钟
是什么? 是 Java Micro Edition 的缩写。它是用于嵌入式和移动设备(传感器、网关、手机、打印机、电视机顶盒)的可移植代码的开发和部署平台。它基于面向对象的 Java。它具有强大的用户界面,并且非常...
阅读 4 分钟
? 将米转换为公里是各种 Java 应用程序中的常见任务,尤其是在处理不同尺度的距离或测量值时。幸运的是,执行此转换非常简单,只需要几行代码。在本节中,我们将介绍转换过程...
阅读 3 分钟
"URLify" 描述了用 %20(通常用于表示 URL 中的空格)替换字符串中每个空格的做法。当构建可能包含空格的字符串以在不允许实际空格的 URL 中使用时,这一点至关重要。什么是 URLify?"URLify" 是...
7 分钟阅读
数组的数组可以是一个二维数组。二维数组由显示行和列集合的矩阵组成。我们可以使用它们的索引来访问二维数组中的单个单元格,就像访问一维数组一样,因为元素...
阅读 8 分钟
Java 技术无需介绍。世界各地的人们仍然对 Java 在 Web 和移动开发中令人惊叹的力量感到惊叹。当然,您也可能被 Java 在软件开发中的流行度和垄断地位所吸引,并且可能想使用...
阅读 8 分钟
在数论领域,Kaprekar 数因其有趣的性质而占有特殊地位。这些数字以印度数学家 D. R. Kaprekar 的名字命名,它们具有一个独特的特性,即可以将它们分成两部分,这两部分的平方相加可以得到...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India