Java Protected和Package访问修饰符
Protected和Package访问修饰符确定类或方法的成员如何被访问。这些修饰符附加到成员的声明时。我们知道,这些访问修饰符在Java的面向对象概念中起着重要的作用,如封装、多态和继承。它有助于防止成员提供的功能被滥用。我们将通过示例程序来了解Java中的protected和package访问修饰符。
Java中的访问修饰符
Protected访问修饰符
它在继承的情况下主要用于控制父类成员和相应子类成员的访问。它允许一个元素在当前包外访问,但只允许直接子类访问。这里,包是容器,包含一组类。
protected访问修饰符的几个示例 –
protected int i1 = 108;
protected double d2 = 6.55;
这里,变量声明为protected。
示例
下面的示例说明了在Java中使用protected方法的用法。
class Pack {
protected void prnt() {
String msg = "I am accessing a protected method";
System.out.print(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();
}
}
输出
I am accessing a protected method
在上面的代码中,类’Pack’是类’ClassShow’的父类。在父类中,我们声明了一个受保护的方法’prnt()’来打印一个简单的消息。在子类的main()方法中,我们定义了一个子类’ClassShow’的对象来调用受保护的方法’prnt()’。
包访问修饰符
它也被称为默认访问修饰符。当我们对类和方法没有明确指定访问修饰符时,Java编译器会自动将其视为默认或包成员。我们可以在子类和同一个包中的其他类中访问这些成员。
包访问修饰符的几个示例 –
int i1 = 108;
double d2 = 6.55;
在这里,变量被声明为默认的或者包级别的。
示例
下面的示例展示了Java中包成员是如何工作的。
public class Overflw {
static void methodA(int data1) {
// default method 1
data1++;
methodB(data1);
// calling methodB
}
static void methodB(int data1) {
// default method 2
data1++;
int data2 = 5;
// default member variable
int mult = data1 * data2;
System.out.println("Value of data1 and data2 multiplication is: " + mult);
}
public static void main(String []args) {
int data1 = 0;
// variable with default modifier
methodA(data1);
// calling methodA
}
}
输出
Value of data1 and data2 multiplication is: 10
我们创建了两个参数化的用户定义方法,分别命名为’methodA’和’methodB’。在主方法中,我们声明并初始化了一个整型变量’data1’为0,然后将其作为参数传递给’methodA’。现在,’methodA’调用了’方法B’,并传递了’data1’的增加值。在’methodB’内部,我们计算了乘法并打印了结果。
受保护的访问修饰符与包访问修饰符的区别
通过上述讨论,我们可以得出以下受保护和包访问修饰符之间的不同之处-
受保护(Protected) | 包(Package) |
---|---|
我们使用protected关键字来指定成员为受保护的。 | 不需要任何特定的关键字。 |
受保护的成员在同一个包内以及其他包中都是可访问的。但在其他包的情况下,只有继承的类才能访问。 | 包访问修饰符比受保护更受限制,因为包成员只能被同一个包访问。 |
我们不能将类定义为受保护。 | 我们可以定义默认类。 |
它只适用于成员级别。 | 它既适用于顶级,也适用于成员级别。 |
结论
我们在本文中首先给出了受保护和包访问修饰符的定义,然后在后面的部分中,我们详细解释了它们,并给出了相应的示例。最后,我们讨论了它们之间的区别。