Java 中的受保护访问修饰符和最终访问修饰符
受保护和最终访问修饰符决定了如何访问类的成员或方法。修饰符在声明成员时附加到成员上。我们知道这些访问修饰符在 Java 面向对象概念(如封装和继承)中起着重要作用。它有助于防止滥用成员提供的功能。我们将尝试通过示例程序来了解 Java 中的受保护和最终访问修饰符。
Java 中的访问修饰符
受保护访问修饰符
它主要用于继承的情况下,以控制父类成员和相应子类成员的访问。它允许在当前包之外访问元素,但仅限于类的直接子类。这里,包是包含一组类的容器。
受保护访问修饰符的一些示例 -
protected int data1 = 5; protected double data2 = 5.55;
这里,变量被声明为受保护的。
示例
以下示例说明了在 Java 中使用受保护方法。
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 int pinCode = 500081; protected double pi = 3.14;
这里,变量被声明为最终的。
Java 中的 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()”的最终方法来打印一条简单消息。在子类中,我们尝试覆盖“prnt()”方法以修改“msg”的值,并在其 main() 方法内部,我们定义了一个子类“ClassShow”的对象来调用最终方法“prnt()”。但是我们得到一个错误,指出我们不能覆盖最终方法。
受保护与最终访问修饰符
从上面的讨论中,我们可以得出受保护和最终访问修饰符之间以下差异的结论 -
受保护 |
最终 |
---|---|
它是一个访问修饰符,这意味着它可以控制变量和方法的访问。 |
它实际上是一个非访问修饰符,这意味着它可以控制类及其成员的行为。 |
我们不能将类定义为受保护的。 |
我们可以将类定义为最终的。 |
它适用于成员级别。 |
它适用于顶级。 |
我们使用 protected 关键字。 |
它需要 final 关键字。 |
受保护成员在包内以及其他包中都是可访问的。但在其他包的情况下,它仅对继承的类可访问。 |
最终成员不能在当前包之外访问。 |
结论
我们从定义受保护和最终访问修饰符开始本文,并在后面的部分中,我们分别用示例详细解释了它们。最后,我们讨论了它们之间的一些区别。