Модификаторы доступа в Java

Опубликовано: 15 Февраля, 2022

Как следует из названия, модификаторы доступа в Java помогают ограничить область действия класса, конструктора, переменной, метода или члена данных. В java доступны четыре типа модификаторов доступа:

  1. По умолчанию - ключевое слово не требуется
  2. Частный
  3. Защищено
  4. Общественные

  • По умолчанию : если модификатор доступа не указан для класса, метода или элемента данных - считается, что по умолчанию используется модификатор доступа по умолчанию.
    • Члены данных, класс или методы, которые не объявлены с использованием каких-либо модификаторов доступа, т. Е. Имеют модификатор доступа по умолчанию, доступны только в одном пакете .

In this example, we will create two packages and the classes in the packages will be having the default access modifiers and we will try to access a class from one package from a class of the second package.

Java

// Java program to illustrate default modifier 
package p1; 
  
// Class Geeks is having Default access modifier 
class Geek 
    void display() 
    
        System.out.println("Hello World!"); 
    

Java

// Java program to illustrate error while 
// using class from different package with 
// default modifier 
package p2; 
import p1.*; 
  
// This class is having default access modifier 
class GeekNew 
    public static void main(String args[]) 
    
        // Accessing class Geek from package p1 
        Geeks obj = new Geek(); 
  
        obj.display(); 
    

Выход:

 Ошибка времени компиляции
  • Частный : модификатор частного доступа указывается с помощью ключевого слова private .
    • Методы или члены данных, объявленные как частные, доступны только в том классе, в котором они объявлены.
    • Любой другой класс того же пакета не сможет получить доступ к этим членам.
    • Классы или интерфейсы верхнего уровня не могут быть объявлены частными, потому что
      1. private означает «видимый только в пределах класса включения».
      2. защищенный означает «видимый только внутри включающего класса и любых подклассов»

Следовательно, эти модификаторы применительно к классам применяются только к вложенным классам, а не к классам верхнего уровня.

In this example, we will create two classes A and B within the same package p1. We will declare a method in class A as private and try to access this method from class B and see the result.

Java

// Java program to illustrate error while 
// using class from different package with 
// private modifier 
package p1; 
  
class
private void display() 
    
        System.out.println("GeeksforGeeks"); 
    
  
class
public static void main(String args[]) 
    
        A obj = new A(); 
        // Trying to access private method
        // of another class 
        obj.display(); 
    

Выход:

 ошибка: display () имеет частный доступ в A
        obj.display ();
  • protected : Модификатор доступа protected указывается с помощью ключевого слова protected .
    • Методы или члены данных, объявленные как защищенные, доступны в одном пакете или подклассах в разных пакетах.

In this example, we will create two packages p1 and p2. Class A in p1 is made public, to access it in p2. The method display in class A is protected and class B is inherited from class A and this protected method is then accessed by creating an object of class B.

Java

// Java program to illustrate 
// protected modifier 
package p1; 
  
// Class A 
public class
protected void display() 
    
        System.out.println("GeeksforGeeks"); 
    

Java

// Java program to illustrate 
// protected modifier 
package p2; 
import p1.*; // importing all classes in package p1 
  
// Class B is subclass of A 
class B extends
public static void main(String args[]) 
    B obj = new B(); 
    obj.display(); 
      

Output:

GeeksforGeeks
  • public: The public access modifier is specified using the keyword public
    • The public access modifier has the widest scope among all other access modifiers.
    • Classes, methods, or data members that are declared as public are accessible from everywhere in the program. There is no restriction on the scope of public data members.

Java

// Java program to illustrate 
// public modifier 
package p1; 
public class
public void display() 
    
        System.out.println("GeeksforGeeks"); 
    
}

Java

package p2;
import p1.*;
class B {
    public static void main(String args[])
    {
        A obj = new A;
        obj.display();
    }
}

Выход:

 Компьютерщики

Важные моменты:

  • Если ваш класс используют другие программисты, попробуйте использовать самый ограничительный уровень доступа, который имеет смысл для конкретного члена. Используйте приватное, если у вас нет веской причины не делать этого.
  • Избегайте общедоступных полей, кроме констант.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .