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()' 的 protected 方法来打印一条简单的消息。在子类 'ClassShow' 的 main() 方法中,我们定义了一个子类 'ClassShow' 的对象来调用 protected 方法 'prnt()'。
Package 访问修饰符
它也称为默认访问修饰符。当我们没有显式地为类和方法指定任何访问说明符时,Java 编译器会自动将其视为默认的或包成员。我们可以在子类以及同一包内的其他类中访问这些成员。
一些 package 访问修饰符的示例:
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' 的带参数的用户定义方法。在 main 方法中,我们声明并初始化一个整数变量 'data1' 为 0,然后将其作为参数传递给 'methodA'。现在,'methodA' 调用 'methodB',并使用 'data1' 的增量值。在 'methodB' 内部,我们计算乘法并打印结果。
Protected 与 Package 访问修饰符的比较
从上面的讨论中,我们可以得出 Protected 和 Package 访问修饰符之间以下区别:
Protected |
Package |
|---|---|
我们使用 protected 关键字来指定成员被设置为 protected。 |
它不需要任何特定的关键字。 |
protected 成员在包内以及其他包中都是可访问的。但在其他包的情况下,它只能被继承类访问。 |
package 访问修饰符比 protected 更受限制,因为包成员只能被同一包访问。 |
我们不能将类定义为 protected。 |
我们可以定义一个默认类。 |
它仅适用于成员级别。 |
它适用于顶级和成员级别。 |
结论
我们首先定义了 protected 和 package 访问修饰符,并在后面的部分中通过相应的示例详细解释了它们。最后,我们讨论了它们彼此的不同之处。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP