public 和 protected 访问修饰符决定如何访问类或方法的成员。修饰符在声明时附加到成员上。我们知道这些访问修饰符在 Java oops 概念(如封装、多态性和继承)中发挥着重要作用。它有助于防止滥用会员提供的功能。我们将尝试通过示例程序来理解 Java 中的 public 和 protected 访问修饰符。
Java 中的访问修饰符
公共访问修饰符
Java 不限制公共成员的可访问性。任何声明为 public 的东西都可以在任何地方访问,这意味着我们可以在类内、类外、包内和包外访问它们。您可能已经注意到,Java 中的 main() 方法始终定义为公共方法,以便当前程序任何范围之外的 JVM 都可以调用它。
公共访问修饰符的一些示例 -
public int i1 = 108; public double d2 = 6.55;
这里,变量被声明为公共。
示例
以下示例说明了包成员在 Java 中的工作原理。
class Pack { public void prnt() { // method declared as public String msg = "I am inside a public method"; System.out.print(msg); } } public class ClassShow extends Pack { // public child class public static void main(String args[]) { // creating object of child class ClassShow obj = new ClassShow(); // method calling through object of child class obj.prnt(); } }
输出
I am inside a public method
在上面的代码中,“Pack”类是“ClassShow”的父类。在父类中,我们声明了一个名为“prnt()”的公共方法来打印一条简单的消息。在子类的main()方法中,我们定义了子类“ClassShow”的对象来调用公共方法“prnt()”。在这里,子类也是公共的。
受保护的访问修饰符
多用于继承的情况下,控制父类成员和对应子类成员的访问。它允许在当前包之外访问元素,但只能访问类的直接子类。在这里,包是保存一组类的容器。
受保护访问修饰符的一些示例 -
protected int data1 = 5; protected double data2 = 5.55;
这里,变量被声明为受保护的。
示例
以下示例说明了 Java 中受保护方法的使用。
class Pack { protected void prnt() { String msg = "Tutorials Point!!"; System.out.print("Welcome to " + msg); } } public class ClassShow extends Pack { public static void main(String args[]) { // creating object of child class ClassShow obj = new ClassShow(); // method calling through object of child class obj.prnt(); } }
输出
Welcome to Tutorials Point!!
在上面的代码中,“Pack”类是“ClassShow”的父类。在父类中,我们声明了一个名为“prnt()”的受保护方法来打印一条简单的消息。在子类的main()方法中,我们定义了子类‘ClassShow’的对象来调用受保护的方法‘prnt()’。
公共与受保护的访问修饰符
从上面的讨论中,我们可以得出公共和私有访问修饰符之间的以下区别 -
公开 |
受保护 |
---|---|
我们需要使用关键字“public”来指定成员公开。 |
我们使用“protected”关键字来指定成员受到保护。 |
我们可以将任何类定义为公共类。 |
类不能被定义为受保护的。 |
公共成员可以被包内和包外的任何类访问。 |
受保护的成员可以在包内以及其他包中访问。但对于其他包,它只能被继承的类访问。 |
顶级和会员均适用。 |
仅适用于会员级别。 |
结论
我们首先定义了 public 和 protected 访问修饰符,在后面的部分中,我们通过各自的示例详细解释了它们。最后,我们讨论了它们之间的一些差异。
以上是Java中的公共(public)与受保护(protected)访问修饰符的区别的详细内容。更多信息请关注PHP中文网其他相关文章!

本文分析了2025年的前四个JavaScript框架(React,Angular,Vue,Susve),比较了它们的性能,可伸缩性和未来前景。 尽管由于强大的社区和生态系统,所有这些都保持占主导地位,但它们的相对人口

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

Node.js 20通过V8发动机改进可显着提高性能,特别是更快的垃圾收集和I/O。 新功能包括更好的WebSembly支持和精制的调试工具,提高开发人员的生产率和应用速度。

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

本文介绍了SnakeyAml中的CVE-2022-1471漏洞,这是一个允许远程代码执行的关键缺陷。 它详细介绍了如何升级春季启动应用程序到Snakeyaml 1.33或更高版本的降低风险,强调了依赖性更新

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用lambda表达式,流API,方法参考和可选探索将功能编程集成到Java中。 它突出显示了通过简洁性和不变性改善代码可读性和可维护性等好处


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver CS6
视觉化网页开发工具