Java Protected和Final访问修饰符

Java Protected和Final访问修饰符

protected和final访问修饰符确定类或方法的成员如何被访问。这些修饰符在声明时附加到成员上。我们知道这些访问修饰符在Java面向对象的概念中起着重要作用,例如封装和继承。它有助于防止成员提供的功能被误用。我们将通过示例程序来了解Java中的protected和final访问修饰符。

Java中的访问修饰符

Protected访问修饰符

它在继承的情况下主要用于控制父类成员和相应子类成员的访问。它允许元素在当前包之外被访问,但只限于直接子类的访问。这里,包是包含一组类的容器。

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()’。

最终访问修饰符

当使用关键字’final’将类或方法的任何成员声明为final时,我们基本上通过阻止对它们的修改来将它们变成常量。final成员必须在声明时初始化,或者它们也可以在构造函数中进行初始化。大多数情况下,我们更喜欢在声明时进行初始化。

几个最终访问修饰符的示例:

final int pinCode = 500081;
protected double pi = 3.14;

在这里,变量声明为final。

Java中的final关键字有三种不同的用法:

  • final变量 - 我们不能修改final变量的值,它更像是一个常量。

  • final方法 - 为了防止覆盖,我们将方法声明为final。我们在子类中覆盖一个方法,以根据需要修改指定方法的特性。

  • final类 - 我们无法继承final类的属性。

示例

以下示例说明了在Java中使用final关键字与方法。

Code:
class Pack {  
   public final void prnt() {
      String msg = "Tutorials Point!!";
      System.out.print("Welcome to " + msg);
   }
}  
public class ClassShow extends Pack {
   public final void prnt() {
      // overriding prnt method
      String msg = "Tutorix!!";
      System.out.print("Welcome to " + msg);
   }
   public static void main(String args[]) { 
      // creating object of child class
      ClassShow obj = new ClassShow();  
      // method calling through object of child class
      obj.prnt();  
   }  
}

输出

ClassShow.java:1: error: class, interface, enum, or record expected
Code:
^
1 error

在上面的代码中,类’Pack’是’ClassShow’的父类。在父类中,我们声明了一个名为’prnt()’的final方法来打印一个简单的消息。在子类中,我们尝试重写’prnt()’方法来修改’msg’的值,并在其main()方法中,我们定义了一个子类’ClassShow’的对象来调用final方法’prnt()’。但是我们得到了一个错误,指出我们不能重写一个final方法。

受保护的vs final访问修饰词

从上面的讨论中,我们可以得出以下受保护和final访问修饰符之间的区别:

Protected Final
保护修饰符,意味着它可以控制变量和方法的访问。 非访问修饰符,可以控制类及其成员的行为。
不能将类定义为protected。 可以将类定义为final。
适用于成员级别。 适用于顶级级别。
使用protected关键字。 需要final关键字。
保护成员在包内和其他包内均可访问。但对于其他包,只能由继承的类访问。 不能在当前包外访问final成员。

结论

本文首先对protected和final修饰符进行了定义,后续部分详细解释了它们,并附上了相应的示例。最后,我们讨论了它们之间的几个区别。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程