每当我们编写我们的类时,我们必须向 JVM 提供一些关于我们的类的信息,比如这个类是否可以从任何地方访问,是否可以创建子类,是否可以创建对象等等。我们可以通过在Java称为访问修饰符的适当关键字来指定此信息。因此访问修饰符用于设置类、方法和其他成员的可访问性。
私有访问修饰符:
此修饰符不适用于顶级类或接口。它仅适用于类中的构造函数、方法和字段。如果变量或方法或构造函数被声明为私有,那么我们只能从类内部访问它们,即从类外部我们无法访问它们。
Java
// Java Program to illustrate Private Access Modifier
// import required packages
import java.io.*;
import java.util.*;
// helper class
class A {
// helper method
private void m1() { System.out.println("GFG"); }
}
// driver class
class B {
// main method
public static void main(String[] args)
{
// creating an object of type class A
A a = new A();
// accessing the method m1()
a.m1();
}
}
Java
// Java program to illustrate Final keyword
// import required packages
import java.io.*;
import java.util.*;
// Declaring parent class P
class P {
// Declaring a first name
// method
public void firstName()
{
// Display firstname
System.out.println("Rahul ");
}
/// Declaring a final surName
// method
public final void surName()
{
// Display surname
System.out.println("Trivedi");
}
}
// Creating a child class
// of above parent class
class C extends P {
// overriding the surName
// method
public void surName()
{
// Display surname
System.out.println("Sharma");
}
// Main method
public static void main(String[] args)
{
// Display message
System.out.println("GFG");
}
}
最终访问修饰符:
它是适用于类、方法和变量的修饰符。如果我们将父类方法声明为 final,那么我们不能在子类中覆盖该方法,因为它的实现是 final 的,如果一个类被声明为 final,我们就不能扩展该类的功能,即我们不能创建该类的子类,即最终类不可能继承。 final 类中存在的每个方法始终是 final y 默认值,但 final 类中存在的每个变量都不需要是 final。 final 关键字的主要优点是我们可以实现安全性,并且可以提供独特的实现。但是 final 关键字的主要缺点是我们缺少像继承(因为 final 类)、多态性(因为 final 方法)等 OOP 的主要优点,因此如果没有特定要求,则不建议使用 final关键词。
Java
// Java program to illustrate Final keyword
// import required packages
import java.io.*;
import java.util.*;
// Declaring parent class P
class P {
// Declaring a first name
// method
public void firstName()
{
// Display firstname
System.out.println("Rahul ");
}
/// Declaring a final surName
// method
public final void surName()
{
// Display surname
System.out.println("Trivedi");
}
}
// Creating a child class
// of above parent class
class C extends P {
// overriding the surName
// method
public void surName()
{
// Display surname
System.out.println("Sharma");
}
// Main method
public static void main(String[] args)
{
// Display message
System.out.println("GFG");
}
}
Private Access Modifier | Final Access Modifier |
---|---|
This modifier is not applicable to top-level classes. | This modifier is applicable to top-level classes. |
We cannot access private methods outside the class. | We can access the final method outside the class. |
We can hide the private method. | The final method cannot be hidden. |
This modifier is applicable to both the enum and constructor. | The final modifier is not applicable to both the enum and constructor. |
This modifier is not applicable for local variables. | The final modifier is the only modifier which is applicable for local variables. |