Язык Java предоставляет много модификаторов, в основном разделенных на следующие две категории:
Модификаторы используются для определения классов, методов или переменных, и обычно расположены на передней части утверждения. Давайте используем следующие примеры, чтобы проиллюстрировать:
Public Class Classname {// ...} Private Boolean Myflag; Статическая окончательная двойная неделя = 9,5; защищенная статическая окончательная конечная конечная int boxwidth = 42; public static void main (string [] arguments) {// Тело метода}Модификатор управления доступом
В Java элементы управления доступа могут использоваться для защиты доступа к классам, переменным, методам и конструкторам. Java поддерживает 4 различных разрешения на доступ.
По умолчанию, также известная как по умолчанию, видна в том же пакете без использования каких -либо модификаторов.
Частный, указанный с частным модификатором, видимый в том же классе.
Общий, указанный общественным модификатором, видимый для всех классов.
Защищен, указан с защищенным модификатором, видимым для классов и всех подклассов в одном и том же пакете.
Модификатор доступа по умолчанию - ключевые слова не используются
Переменные и методы, объявленные модификаторами доступа по умолчанию, видны для классов в том же пакете. Все переменные в интерфейсе неявно объявляются как публичный статический финал, в то время как методы в интерфейсе по умолчанию являются общедоступными.
Пример:
Как показано в следующем примере, объявление переменных и методов может быть без каких -либо модификаторов.
String version = "1.5.1"; boolean processorder () {return true;}Модификатор частного доступа - частный
Модификаторы частного доступа являются самым строгим уровнем доступа, поэтому методы, переменные и конструкторы, объявленные как частные, могут быть доступны только к классу, к которому они принадлежат, а классы и интерфейсы не могут быть объявлены частными.
Переменные, объявленные как тип частного доступа, можно получить только внешними классами с помощью общественных методов Getter в классе.
Использование модификатора частного доступа в основном используется для скрытия деталей реализации класса и защиты данных класса.
В следующем классе используется модификатор частного доступа:
открытый класс Logger {Private String Format; public String getFormat () {return this.format; } public void setFormat (string format) {this.format = format; }}В примере переменная формата в классе Logger является частной переменной, поэтому другие классы не могут напрямую получить и установить значение переменной. Чтобы позволить другим классам манипулировать переменной, определены два публичных метода: getFormat () (возвращает значение формата) и SetFormat (String) (устанавливает значение формата)
Модификатор общественного доступа - общественный
Классы, методы, конструкторы и интерфейсы, объявленные общественными, могут быть доступны любым другим классом.
Если несколько общественных классов, которые доступны друг к другу, распределены в разных пакетах, вам необходимо импортировать пакет, где находится соответствующий общественный класс. Из -за наследства класса все публичные методы и переменные класса могут быть унаследованы его подклассами.
В следующих функциях используется контроль публичного доступа:
public static void main (string [] аргументы) {// ...}Main () метод программы Java должен быть установлен на публику, в противном случае интерпретатор Java не сможет запустить класс.
Защищенный модификатор доступа - защищен
Переменные, методы и конструкторы, объявленные как защищенные, могут быть доступны любым другим классом в одном и том же пакете или подклассами в разных пакетах.
Модификатор защищенного доступа не может изменять классы и интерфейсы. Методы и переменные -члены могут быть объявлены как защищенные, но переменные элемента и методы членов раздела не могут быть объявлены как защищенные.
Подклассы могут получить доступ к методам и переменным, объявляемым защищенным модификатором, чтобы они могли защищать не связанные классы от использования этих методов и переменных.
В следующем родительском классе используется модификатор защищенного доступа, а подкласс перегружает метод openspeaker () родительского класса.
Класс Audioplayer {Protected Boolean openspeaker (Speaker sp) {// Детали реализации}} Class Streamingudioplayer {boolean openspeaker (speaker sp) {// Подробности реализации}}}}}}}}}}}}}Если метод openspeaker () объявляется частным, то классы, отличные от аудиопластика, не смогут получить доступ к методу. Если OpenSpeaker () объявляется публичным, все классы могут получить доступ к методу. Если мы хотим, чтобы метод был видим только для подкласса класса, в котором он находится, то объявите метод защищенным.
Контроль доступа и наследство
Обратите внимание на следующие правила наследования:
Не доступа к модификатору
Для реализации некоторых других функций Java также предоставляет много модификаторов, не являющихся доступа.
Статический модификатор используется для создания методов класса и переменных класса.
Окончательный модификатор используется для изменения классов, методов и переменных. Класс, модифицированный окончательным, не может быть унаследован, измененный метод не может быть переопределен унаследованным классом, а измененная переменная является постоянной и не может быть изменена.
Абстрактный модификатор, используемый для создания абстрактных классов и абстрактных методов.
Синхронизированные и летучие модификаторы в основном используются для программирования потоков.
Статический модификатор
Статическое ключевое слово используется для объявления статических переменных независимыми от объектов. Независимо от того, сколько объектов укладывает класс, у него есть только одна копия своей статической переменной. Статические переменные также называются переменными класса. Локальные переменные могут быть объявлены как статические переменные.
Статическое ключевое слово используется для объявления статических методов независимыми от объектов. Статические методы не могут использовать нестатические переменные класса. Статический метод получает данные из списка параметров, а затем вычисляет данные.
Доступ к переменным класса и методам можно получить непосредственно с использованием classname.variablename и classname.methodname.
Как показано в следующем примере, статический модификатор используется для создания методов класса и переменных класса.
открытый класс InstanceCounter {private static int uminStances = 0; Защищенный static int getCount () {return numinStances; } private static void addInstance () {numinstances ++; } InstanceCounter () {instanceCounter.addinStance (); } public static void main (string [] аргументы) {System.out.println («Начиная с» + instanceCounter.getCount () + "экземпляры"); for (int i = 0; i <500; ++ i) {new InstanceCounter (); } System.out.println ("Создан" + instanceCounter.getCount () + "экземпляры"); }}Приведенные выше примеры запускаются и редактируются следующим образом:
Начал с 0 экземпляров
Создал 500 экземпляров
Окончательный модификатор
Окончательные переменные:
Окончательные переменные могут быть явно инициализированы и могут быть инициализированы только один раз. Ссылки на объекты, объявленные конечными, не могут указывать на разные объекты. Но данные в конечном объекте могут быть изменены. Другими словами, ссылка на конечный объект не может быть изменена, но значение внутри может быть изменено.
Окончательные модификаторы обычно используются вместе со статическими модификаторами для создания констант класса.
Пример:
открытый тест класса {окончательный int value = 10; // Ниже приведен пример, в котором объявляется постоянная публичная статическая конечная финала int boxwidth = 6; статическая конечная строка title = "Manager"; public void changeValue () {value = 12; // ошибка будет выведена}}Окончательный метод
Окончательный метод в классе может быть унаследован подклассом, но не может быть изменен подклассом.
Основная цель объявления окончательного метода - предотвратить изменение содержания метода.
Как показано ниже, объявьте метод, используя окончательный модификатор.
Общедоступный тест класса {public final void changename () {// method body}}Окончательный класс
Окончательные классы не могут быть унаследованы, и ни один класс не может унаследовать какие -либо функции окончательных классов.
Пример:
Общедоступный тест окончательного класса {// Класс Body}Абстрактный модификатор
Аннотация класс:
Абстрактные классы не могут быть использованы для создания объектов. Единственная цель объявления абстрактных классов - расширить класс в будущем.
Класс не может быть изменен абстрактным и окончательным одновременно. Если класс содержит абстрактные методы, класс должен быть объявлен как абстрактный класс, в противном случае возникнет ошибка компиляции.
Абстрактные классы могут содержать абстрактные методы и неабстрортные методы.
Пример:
Абстрактный класс караван (частная двойная цена; Приватная строковая модель; частный строковый год; Public Abstract void gofast (); // абстрактный метод Public Abstract void ChangeColor ();}
Абстрактные методы
Абстрактный метод - это метод без какой -либо реализации, а конкретная реализация метода предоставляется подклассом. Абстрактные методы не могут быть объявлены как окончательные и строгие.
Любой подкласс, который наследует абстрактный класс, должен реализовать все абстрактные методы родительского класса, если только подкласс также не является абстрактным классом.
Если класс содержит несколько абстрактных методов, класс должен быть объявлен как абстрактный класс. Абстрактные классы могут не содержать абстрактных методов.
Объявление абстрактного метода заканчивается полуколоном, например: Public Abstract Sample ();
Пример:
Public Abstract Class Superclass {Abstract void M (); // Аннотация метод} класс SubClass Extens SuperClass {// реализовать абстрактный метод void m () {.........}}Синхронизированный модификатор
Метод, объявленный синхронизированным ключевым словом, может быть доступен только одним потоком одновременно. Синхронизированный модификатор может быть применен к четырем модификаторам доступа.
Пример:
public Synchrinized void showdetails () {......}Временный модификатор
Когда сериализованный объект содержит переменную экземпляра, модифицированную переходными веществами, виртуальная машина Java (JVM) пропускает эту конкретную переменную.
Этот модификатор включен в оператор, который определяет переменную и используется для предварительной обработки типов данных классов и переменных.
Пример:
Public Transient Int Limit = 55; // не будет постоянным публичным INT B; // будет сохраняться
летучий модификатор
Периоды летучих модифицированных членов вынуждены перечитывать значение переменной элемента из общей памяти каждый раз, когда к ним обращаются поток. Более того, когда изменяется переменная элемента, поток вынужден записать значение изменения в общей памяти. Таким образом, в любой момент два разных потока всегда видят одинаковое значение определенной переменной элемента. Ссылка на летучую объект может быть нулевой.
Пример:
Общедоступный класс Myrunnable Reflsements Runnable {private volatile Boolean Active; public void run () {active = true; while (active) // line 1 {// code}} public void stop () {active = false; // строка 2}}Как правило, метод run () вызывается в одном потоке, а метод Stop () вызывается в другом потоке. Если используется значение в линии 1 в буфере, цикл не остановится, когда активный в строке 2 установлен на FALSE.
Выше всего содержание этой статьи. Я надеюсь, что содержание этой статьи поможет всем, кто учится или работа. Я также надеюсь поддержать Wulin.com больше!