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修饰符进行了定义,后续部分详细解释了它们,并附上了相应的示例。最后,我们讨论了它们之间的几个区别。