📜  Java的私有与最终访问修饰符

📅  最后修改于: 2021-09-11 03:49:08             🧑  作者: Mango

每当我们编写我们的类时,我们必须向 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.