public 和 protected 访问修饰符决定如何访问类或方法的成员。修饰符在声明时附加到成员上。我们知道这些访问修饰符在 Java oops 概念(如封装、多态性和继承)中发挥着重要作用。它有助于防止滥用会员提供的功能。我们将尝试通过示例程序来理解 Java 中的 public 和 protected 访问修饰符。
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中文网其他相关文章!