Модификаторы доступа в Java
Как следует из названия, модификаторы доступа в Java помогают ограничить область действия класса, конструктора, переменной, метода или члена данных. В java доступны четыре типа модификаторов доступа:
- По умолчанию - ключевое слово не требуется
- Частный
- Защищено
- Общественные
- По умолчанию : если модификатор доступа не указан для класса, метода или элемента данных - считается, что по умолчанию используется модификатор доступа по умолчанию.
- Члены данных, класс или методы, которые не объявлены с использованием каких-либо модификаторов доступа, т. Е. Имеют модификатор доступа по умолчанию, доступны только в одном пакете .
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 .
- Методы или члены данных, объявленные как частные, доступны только в том классе, в котором они объявлены.
- Любой другой класс того же пакета не сможет получить доступ к этим членам.
- Классы или интерфейсы верхнего уровня не могут быть объявлены частными, потому что
- private означает «видимый только в пределах класса включения».
- защищенный означает «видимый только внутри включающего класса и любых подклассов»
Следовательно, эти модификаторы применительно к классам применяются только к вложенным классам, а не к классам верхнего уровня.
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 A { private void display() { System.out.println( "GeeksforGeeks" ); } } class B { 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 A { 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 A { 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 A { 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 и многому другому, см. Полный курс подготовки к собеседованию .