Модификатор доступа Java (контроллер доступа)
Java контролирует права доступа и другие функции классов, свойств и методов с помощью модификаторов, обычно размещенных в передней части заявления. Например:
Общедоступный класс класс класса {// тело класса} private boolean myflag; статическая окончательная двойная неделя = 9,5; защищенная статическая конечная окончательная коробочка = 42; Публичная срока void main (string [] аргументы) {// Тело метода}В Java есть много модификаторов, разделенных на модификаторы доступа и неактивные модификаторы. В этом разделе представлены только модификаторы доступа, и модификаторы, не относящиеся к Access, будут введены позже.
Модификаторы доступа также называются символами управления доступом, которые относятся к ключевым словам, которые могут контролировать права на использование классов, переменные участников и методы.
Контроллеры доступа являются важной концепцией в объектно-ориентированном программировании и могут использоваться для защиты доступа к классам, переменным, методам и конструкторам.
Java поддерживает четыре различных разрешения на доступ:
Public: Public
Классы, методы, конструкторы и интерфейсы, объявленные общественными, могут быть доступны любым другим классом.
Если несколько публичных классов, доступ к которому обращаются друг к другу, распределены в неиспользованных пакетах, вам необходимо импортировать пакет, где находится соответствующий общественный класс. Из -за наследства класса все публичные методы и переменные класса могут быть унаследованы его подклассами.
В следующем методе используется контроль публичного доступа:
public static void main (string [] аргументы) {// тело метода} Main () метод программы Java должен быть установлен на публику, в противном случае интерпретатор Java не сможет запустить класс.
Защищен: защищен
Переменные, методы и конструкторы, объявленные как защищенные, могут быть доступны любым другим классом в одном и том же пакете или подклассами в разных пакетах.
Модификатор защищенного доступа не может изменить классы и интерфейсы.
Подклассы могут получить доступ к методам и переменным, объявляемым защищенными модификаторами, чтобы они могли защищать не связанные классы от использования этих методов и переменных.
В следующем родительском классе используется модификатор защищенного доступа, а подкласс перегружает метод Bark () родительского класса.
Public Class Dog {Protected void Bark () {System.out.println ("wow, не приходите"); , Я очень напуган, не следуй за мной ");}} Если метод Bark () объявлен частным, то классы, отличные от Dog, не смогут получить доступ к методу. Если Bark () объявлен публичным, то все классы могут получить доступ к методу. Если мы хотим, чтобы метод был видим только для подкласса класса, в котором он находится, объявите метод защищенным.
Частный: Частный
Модификаторы частного доступа являются самым строгим уровнем доступа, поэтому методы, переменные и конструкторы, объявленные как частные, могут быть доступны только к классу, к которому они принадлежат, а классы и интерфейсы не могут быть объявлены частными.
Переменные, объявленные как тип частного доступа, можно получить только внешними классами с помощью методов общественного геттера/сеттера в классе.
Использование модификатора частного доступа в основном используется для скрытия деталей реализации класса и защиты данных класса.
В следующем классе используется модификатор частного доступа:
Public Class Dog {Private String; (int age) {this.age = age;В примере именные и возрастные переменные в классе собаки являются частными переменными, поэтому другие классы не могут напрямую получить и установить значение переменной. Чтобы позволить другим классам манипулировать переменной, определены две пары публичных методов, getName ()/setName () и getAge ()/setage (), которые используются для получения и установки значений частных переменных.
Это ключевое слово в Java.
Определение методов доступа к частным переменным в классе является обычным, чтобы назвать это так: префикс «get» или «set» в имени переменной, и заработать начальную букву переменной. Например, метод получения имени частной переменной - getName (), и метод для установки name is setName (). Эти методы часто используются и имеют определенные имена, называемые методами Getter и Setter.
По умолчанию: ключевые слова не используются
Ни один модификатор объявленных свойств и методов не видно для классов в том же пакете. Все переменные в интерфейсе неявно объявляются как публичный статический финал, в то время как методы в интерфейсе по умолчанию являются общедоступными.
Как показано в следующем примере, определение классов, переменных и методов не использует никаких модификаторов:
Class Dog {string name; Мастер, я голоден ");}}Контроль доступа и наследство
Обратите внимание, что следующие правила наследования (читатели, которые не понимают концепцию наследования, могут пропустить здесь или нажать на Java Previewance и полиморфный предварительный просмотр):
Методы, объявленные общественными в родительском классе, также должны быть публичными в классе ребенка.
Методы, объявленные как защищенные в родительском классе, либо объявлены как защищенные, либо общественные в детском классе. Нельзя объявить частным.
Методы, объявленные модификаторами по умолчанию в родительском классе, могут быть объявлены частными в подклассах.
Методы, объявленные частными в родительском классе, не могут быть унаследованы.
Как использовать символы управления доступом
Символы управления доступом позволяют легко контролировать разрешения кода:
Когда вам нужно сделать класс, который вы пишете доступ ко всем другим классам, вы можете объявить контроль доступа класса общественностью.
Когда вам нужно сделать свой класс доступным только для классов в вашем собственном пакете, символ управления доступом может быть опущен.
Когда необходимо управлять данными участника в классе, символы управления доступом к данным в этом классе могут быть установлены для публичного, защищенного или пропущенного.
Объем переменных Java <br /> В Java объем переменных делится на четыре уровня: уровень класса, уровень экземпляра объекта, уровень метода и уровень блока.
Переменные на уровне класса также называются глобальными переменными или статическими переменными. Переменные на уровне класса уже существуют после определения класса, занимать пространство памяти, можно получить с помощью имен классов и не нужно создавать экземпляр.
Переменная на уровне экземпляра объекта-это переменная члена.
Переменные на уровне метода-это переменные, определенные в методах, которые являются локальными переменными.
Переменные на уровне блоков-это переменные, определенные в блоке. Блоки относятся к коду, окруженному брекетами, например:
{int age = 3; Ошибка, возраст и переменные имени System.out.println (имя + "уже" + возраст + "лет"); иллюстрировать:
В дополнение к доступу к переменным на уровне метода, методы также могут получить доступ к переменным уровню класса и уровня экземпляра.
Переменные на уровне класса и на уровне экземпляра можно получить внутри блока.
Метод и переменные уровня блока должны отображаться инициализированы, иначе не может быть доступно.
Демо -код:
Общедоступный класс {public Static String name = "weixueyuan"; test1 () {int j = 3; только могут получить доступ к System.out.println ("name =" + name + ", i =" + i + ", j =" + j);} public static void main (string [] args) {// Нет создавать Объект, доступ к системе переменных уровня класса. Результаты работы:
Название микро -академии = Micro Academy, i = 0, J = 3