Сегодня мы узнаем о контроле за правами доступа в Java. Прежде чем обсудить контроль доступа, давайте обсудим, почему необходимо контроль доступа. Рассмотрим два сценария:
Сценарий 1: Инженер A написал класс класса, но инженер A не хочет, чтобы к классу доступ к другим классам, используемым в приложении, так как мы должны с ней справиться?
Сценарий 2: Если инженер А пишет класс класса, в котором есть два метода FUN1 и FUN2, инженер хочет, чтобы FUN1 было видно во внешнем мире. То есть, если другие инженеры называют Classa, они могут назвать только Method Fun1, то что нам делать?
В настоящее время контроль разрешений доступа может сыграть роль.
В Java предоставляются четыре типа управления правами доступа: права доступа по умолчанию (права доступа к пакетам), государственные, частные и защищенные.
Обратите внимание, что только разрешения на доступ к доступу по умолчанию могут использоваться для изменения класса для четырех вышеуказанных типов разрешений на доступ. Четыре разрешения модифицированного класса в порядке. (Занятия, упомянутые в этом месте, предназначены для внешних классов, а не внутренних классов)
Следующее объясняет эти четыре контроля прав доступа для членов класса модификации и класса модификации.
1. Категория модификации
По умолчанию разрешения на доступ к доступу (разрешения на доступ к пакетам): если используется для изменения класса, это означает, что класс виден только для других классов в том же пакете.
Public: если используется для модификации класса, это означает, что класс видна всем другим классам.
Давайте посмотрим на разницу между двумя по нескольким примерам:
Пример 1:
Main.java:
пакет com.cxh.test1; открытый класс main { / ** * @param args * / public static void main (string [] args) {// todo автоматически сгенерированный метод загрязните люди People = new People ("tom"); System.out.println (people.getName ()); }} People.java
пакет com.cxh.test1; класс People {// По умолчанию разрешение доступа (разрешение на доступ к пакетам) Private String name = null; public People (String name) {this.name = name; } public String getName () {return name; } public void setName (string name) {this.name = name; }}Как видно из кода, изменение класса People использует разрешения на доступ по умолчанию, и, поскольку класс People и основной класс находятся в том же пакете, класс People виден в основном классе.
Результаты запуска программы:
Пример 2:
People.java
пакет com.cxh.test2; класс People {// По умолчанию разрешение доступа (разрешение на доступ к пакетам) Private String name = null; public People (String name) {this.name = name; } public String getName () {return name; } public void setName (string name) {this.name = name; }}В настоящее время класс People и основной класс находятся в одном и том же пакете. Что будет?
Вот ошибки, вызванные в основном классе:
Это побуждает, что класс Peolple не виден в основном классе. Исходя из этого, мы видим, что если класс изменяется с разрешениями по умолчанию, класс видна только для других классов в одном пакете и не виден для классов в разных пакетах.
Как показано в приглашении быстрого исправления на рисунке выше, если вы измените разрешения на доступ к доступу по умолчанию на People на публику, класс People будет видна основному классу.
2. Методы и переменные модификации классов
Разрешения по умолчанию по умолчанию (разрешения на доступ к пакетам): если методы или переменные класса изменяются с помощью разрешений на доступ к пакетам, это означает, что методы или переменные класса могут быть названы только в других классах в одном и том же пакете, а методы или переменные класса не могут быть названы в классах в разных упаковках.
Частный: если методы или переменные класса изменяются частными, то методы или переменные класса могут быть доступны только в самом классе и не могут отображаться в классе или в других классах.
Защищенные: если методы или переменные класса изменяются защищенными, методы или переменные этого класса могут быть доступны для того же класса пакетов. Для классов с различными пакетами только классы, унаследованные от этого класса, могут получить доступ к методам или переменным этого класса.
Общественность: Методы или переменные, модифицированные общественностью, видны в любом месте.
Давайте возьмем несколько примеров, чтобы увидеть различия между их методами и переменными классами:
Пример 3:
Main.java не изменился
People.java
пакет com.cxh.test1; Public Class People {Private String name = null; public People (String name) {this.name = name; } String getName () {// разрешение на доступ к доступу по умолчанию (разрешение на доступ к пакетам) возвращает имя; } void setName (string name) {// разрешение по умолчанию по умолчанию (разрешение на доступ к пакетам) this.name = name; }}В настоящее время в основном классе можно отобразить методы вызова.
Но если класс людей и основной класс не в том же пакете:
пакет com.cxh.test2; // он находится в другом пакете, от основного класса Purpance People {Private String name = null; public People (String name) {this.name = name; } String getName () {// разрешение на доступ к доступу по умолчанию (разрешение на доступ к пакетам) возвращает имя; } void setName (string name) {// разрешение по умолчанию по умолчанию (разрешение на доступ к пакетам) this.name = name; }}В настоящее время в основном классе будет вызвана ошибка:
Исходя из этого, мы видим, что если разрешение на доступ по умолчанию используется для изменения методов или переменных класса, к ним можно получить доступ только в других классах того же пакета.
Пример 4:
People.java
пакет com.cxh.test1; Public Class People {Private String name = null; public People (String name) {this.name = name; } защищенная строка getName () {return name; } protected void setName (string name) {this.name = name; }}В настоящее время вы можете отобразить вызовые методы GetName и SetName в Main.
Если класс людей и основной класс находятся в разных пакетах:
пакет com.cxh.test2; Public Class People {Private String name = null; public People (String name) {this.name = name; } защищенная строка getName () {return name; } protected void setName (string name) {this.name = name; }}Ошибка будет сообщена в основном:
Если классный человек указан в com.cxh.test1, чтобы наследовать людей, вы можете отобразить вызовые методы GetName и SetName в классном человеке:
пакет com.cxh.test1; Импорт com.cxh.test2.people; Открытый класс Человек расширяет People {public Man (String name) {super (имя); } public String toString () {return getName (); }}Вот некоторые знания о пакетах Java и файлах класса:
1) Пакеты в Java в основном используются для предотвращения конфликтов именования файлов класса и облегчения организации и управления кодом;
2) Для файла исходного кода Java, если есть открытый класс, может быть только один публичный класс, и имя файла исходного кода должно быть точно таким же, как и имя публичного класса. Кроме того, если есть другие классы, эти классы невидимы за пределами пакета. Если файл исходного кода не имеет публичного класса, имя файла исходного кода может быть названо по своему удовольствию.
Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.