Java Public和Protected访问修饰符
公共(public)和受保护(protected)访问修饰符决定了类或方法的成员可以被如何访问。这些修饰符在声明成员时附加。我们知道这些访问修饰符在Java面向对象的概念中起着重要作用,如封装(encapsulation)、多态(polymorphism)和继承(inheritance)。它有助于防止成员的功能被滥用。我们将通过示例程序来理解Java中的公共(public)和受保护(protected)访问修饰符。
Java中的访问修饰符
公共(public)访问修饰符
Java不限制公共(public)成员的访问性。任何声明为public的内容都可以在任何地方访问,这意味着我们可以在类内部和类外部以及包内部和包外部访问它们。您可能已经注意到,Java中的main()方法总是被定义为public,以便JVM可以在当前程序的任何范围之外调用它。
公共(public)访问修饰符的一些示例:
public int i1 = 108;
public double d2 = 6.55;
在这里,变量声明为public。
示例
以下示例说明了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()’。在这里,子类也是public的。
受保护Protected访问修饰符
它主要用于继承的情况下,用于控制父类成员和相应子类成员的访问。它允许元素在当前包之外被访问,但只能在直接的子类中访问。在这里,包是保存一组类的容器。
受保护的访问修饰符的几个示例−
protected int data1 = 5;
protected double data2 = 5.55;
这里,变量声明为protected。
示例
以下示例说明了在Java中使用protected方法的方法。
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 |
---|---|
我们需要使用关键字“public”来指定成员是公开的。 | 我们使用关键字“protected”来指定成员是受保护的。 |
我们可以将任何类定义为公开的。 | 不能将类定义为受保护的。 |
公开成员可以被包内的任何类以及包外的类访问。 | 受保护成员可以被包内的任何类以及其他包内的类访问。但在其他包内,只能被继承的类访问。 |
适用于顶级和成员级别。 | 只适用于成员级别。 |
结论
我们首先定义了public和protected访问修饰符,然后在后面的部分中详细解释了它们,并举了相应的示例。最后,我们讨论了它们之间的几个区别。