Рубрики
Без рубрики

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

Модификаторы доступа Java. ключевое слово public private protected для контроля доступа. примеры java private, java protected, java public. Спецификаторы доступа Java.

Автор оригинала: Pankaj Kumar.

Модификаторы доступа Java используются для обеспечения контроля доступа в java. Java обеспечивает управление доступом с помощью трех ключевых слов – private , protected и public . Мы не обязаны всегда использовать эти модификаторы доступа, поэтому у нас есть еще один, а именно ” доступ по умолчанию “, ” закрытый пакет ” или ” без модификатора “.

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

Мы можем использовать модификаторы доступа java с классами, а также переменными и методами классов.

Нам разрешено использовать только модификаторы доступа “общедоступный” или “по умолчанию” с классами java.

  1. Если класс является “общедоступным”, то мы можем получить к нему доступ из любого места, т. Е. из любого другого класса, расположенного в любых других пакетах и т.д.
  2. У нас может быть только один “общедоступный” класс в исходном файле, и имя файла должно совпадать с именем общедоступного класса.
  3. Если класс имеет “доступ по умолчанию”, то к нему можно получить доступ только из других классов в том же пакете.

Модификаторы доступа Java с членом класса

У нас могут быть все четыре модификатора доступа для переменных и методов-членов класса. Однако правила модификатора доступа к членам применяются после правил доступа на уровне класса. Например, если класс имеет доступ по умолчанию, то он не будет виден в других пакетах, и, следовательно, методы и переменные класса также не будут видны.

Мы рассмотрим каждый из них отдельно, а затем покажем использование модификаторов доступа java с помощью простой программы.

Модификаторы доступа Java – ключевое слово public

Если член класса является “общедоступным”, то к нему можно получить доступ из любого места. Доступ к переменной – члену или методу осуществляется глобально. Это самый простой способ предоставить доступ членам класса. Однако мы должны позаботиться об использовании этого ключевого слова с переменными класса, иначе любой может изменить значения. Обычно переменные класса хранятся как частные, и для работы с ними предоставляются методы getter-setter.

Модификаторы доступа Java – частное ключевое слово

Если член класса является “частным”, то он будет доступен только внутри того же класса. Это самый ограниченный доступ, и член класса не будет виден внешнему миру. Обычно мы сохраняем переменные класса как частные, а методы, которые предназначены для использования только внутри класса, как частные.

Модификаторы доступа Java – защищенное ключевое слово

Если член класса “защищен”, то он будет доступен только классам в том же пакете и подклассам . Этот модификатор менее ограничен для частного, но более ограничен для публичного доступа. Обычно мы используем это ключевое слово, чтобы убедиться, что переменные класса доступны только подклассам.

Модификаторы доступа Java – доступ по умолчанию

Если у члена класса не указан какой-либо модификатор доступа, то он обрабатывается доступом по умолчанию. Правила доступа аналогичны классам, и член класса с доступом по умолчанию будет доступен только классам в одном пакете. Этот доступ более ограничен, чем публичный, и защищен, но менее ограничен, чем частный.

(Наименее доступный) частный < по умолчанию < защищенный < общедоступный (Наиболее доступный)

В приведенной ниже таблице обобщены вышеуказанные модификаторы доступа в отношении различных классов в одном пакете или других пакетов и подклассов.

Давайте напишем несколько простых классов, в которых мы увидим модификаторы доступа java в действии.

Давайте напишем несколько простых классов, в которых мы увидим модификаторы доступа java в действии.

package com.journaldev.access;

class TestA {

	public void methodPublic(){
		methodPrivate();
	}
	
	protected void methodProtected(){
		methodPrivate();
	}
	
	void methodDefault(){
		methodPrivate();
	}
	
	private void methodPrivate(){}
}

Обратите внимание, что класс тестов имеет доступ по умолчанию, а метод закрытого класса доступен для всех других частей того же класса.

Обратите внимание, что класс тестов имеет доступ по умолчанию, а метод закрытого класса доступен для всех других частей того же класса.


package com.journaldev.access;

import com.journaldev.access.TestA;

public class TestB {

	public static void main(String args[]) {
		new TestA().methodPublic();
		new TestA().methodProtected();
		new TestA().methodDefault();

	}

	public void methodPublic() {

	}

	protected void methodProtected() {

	}

	void methodDefault() {

	}

	private void methodPrivate() {
	}

}

Обратите внимание, что тест находится в том же пакете, что и тест класса, и, следовательно, он может получить доступ к своим членам класса. частные участники недоступны, но все остальные участники доступны из-за одного и того же пакета.

Обратите внимание, что тест находится в том же пакете, что и тест класса, и, следовательно, он может получить доступ к своим членам класса. частные участники недоступны, но все остальные участники доступны из-за одного и того же пакета.


package com.journaldev.access.child;

import com.journaldev.access.TestB;

public class TestC {

	public static void main(String[] args) {
		new TestB().methodPublic();
	}

}

Класс TestB доступен, потому что он общедоступен. Доступны только общедоступные члены класса TestB, поскольку класс Test не входит в один и тот же пакет или его подкласс Test B.

Класс TestB доступен, потому что он общедоступен. Доступны только общедоступные члены класса TestB, поскольку класс Test не входит в один и тот же пакет или его подкласс Test B.


package com.journaldev.util;

import com.journaldev.access.TestB;

public class TestE extends TestB {

	public static void main(String[] args) {
		new TestB().methodPublic();
		new TestB().methodProtected(); // compile time error

		// works, accessing super class protected method using subclass
		new TestE().methodProtected();

	}

}

Поскольку тестируемый класс является подклассом теста B, мы можем получить доступ к защищенным членам теста B через тест дочернего класса. Если мы попытаемся получить прямой доступ к методу, защищенному суперклассом, мы получим ошибку во время компиляции.

Это все для модификаторов доступа java, это просто понять. Просто не путайте с доступом по умолчанию и защищенным доступом.

Простой способ запомнить, что доступ по умолчанию более ограничен, чем защищенный, а защищенные члены доступны в подклассах.

Недавно я снял видео, в котором подробно объясняются модификаторы доступа java, вы можете посмотреть его ниже на YouTube.