Java Protected和Package访问修饰符

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关键字来指定成员为受保护的。 不需要任何特定的关键字。
受保护的成员在同一个包内以及其他包中都是可访问的。但在其他包的情况下,只有继承的类才能访问。 包访问修饰符比受保护更受限制,因为包成员只能被同一个包访问。
我们不能将类定义为受保护。 我们可以定义默认类。
它只适用于成员级别。 它既适用于顶级,也适用于成员级别。

结论

我们在本文中首先给出了受保护和包访问修饰符的定义,然后在后面的部分中,我们详细解释了它们,并给出了相应的示例。最后,我们讨论了它们之间的区别。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程