-
Ang access modifier , na naglalarawan sa pagiging naa-access ng isang klase, bagay o field, ay kinakailangan: sa kawalan nito, ang JVM (ito ay isang mapagkukunan ng unibersal na magic) ay awtomatikong nagtatalaga ng isang default na identifier sa package.
Simula sa pangalawang modifier may mga non-access na modifier, na hindi sapilitan at maaari ding magkasalungat sa isa't isa (ngunit una muna).
-
Ang Static modifier ay nagpapahiwatig na ang klase, bagay, o field ay static. Ngunit ano ang ibig sabihin nito? Karaniwang susubukan natin ito sa mga patlang.
Ang mga static na variable ay tinatawag na mga variable ng klase at natatangi sa lahat ng mga pagkakataon ng klase na iyon. Ang mga static na pamamaraan ay maaaring tawagin nang hindi lumilikha ng bagay kung saan sila idineklara. Ang mga static na klase ay ginagamit kapag pugad ang isang klase sa isa pa at ang prinsipyo ng pakikipag-ugnayan sa pagitan ng panloob at panlabas na klase ay katulad ng mga pamamaraan (ito ay isang paksa para sa isang hiwalay na talakayan). Maaari ding gamitin bilang isang hiwalay na bloke sa loob ng isang bagay.
-
Ang Pangwakas na modifier ay epektibong nagpapahiwatig sa isang variable na ito ay isang pare-pareho. Para sa mga pamamaraan - na hindi sila maaaring ma-override sa panahon ng mana, ngunit para sa mga klase ito ay isang indikasyon na hindi ito maaaring magmana mula dito (hindi nababago).
Nalalapat ang mga static at panghuling modifier sa mga klase, bagay, at field. Gayunpaman, may mga modifier na nalalapat lang sa ilan sa mga ito (o kahit na bahagi ng mga ito, dahil ang variable at method ay isang field, ngunit hindi lahat ng modifier ay nalalapat sa pareho). Kung gumuhit tayo ng isang pagkakatulad, ang mga bota at guwantes lamang ang maaaring mabighani para sa bilis (upang mapabilis ang mga ito), ngunit ang pagkabighani ng isang sumbrero para sa bilis ay walang kabuluhan (at hindi ito papayagan ng Universal Supervisory Council (compiler).
-
Модификатор Abstract применим только к методам и классам. Абстрактный метод — это метод без реализации (тела).
Если класс помечается How абстрактный, он либо содержит абстрактные методы, либо это делается для того чтобы запретить создание экземпляров этого класса. Если проводить аналогию, посреди инструкции можно увидеть заголовок «Раскраска an object», после которого нет описания. Т.е. по этой инструкции можно создать an object и раскрасить его тоже можно, но в конкретно этой инструкции не написано How (пишите свою инструкцию по созданию красного an object на основе этого an object и опишите How его раскрашивать).
-
Модификатор Syncronized используется только для методов. Его наличие свидетельствует о том, что его может одновременно выполнять лишь один поток. Также может использоваться в виде отдельного блока codeа внутри an object (с указанием an object синхронизации).
-
Модификатор Volatile — только для переменных. Его рекомендуется использовать для переменных, которые могут быть одновременно использоваться несколькими потоками. Переменная с таким модификатором при каждом изменении моментально копируется из кэша процессора в основную память, позволяя параллельным потокам получать самое «свежее» meaning.
Стоит отметить, что volatile применим в тех случаях, когда только один поток может записывать в переменную, а остальные лишь читают из нее. Для остальных случаев лучше вешать модификатор synchronized на методы, которые записывают в волатильную переменную.
-
Модификатор Transient – только для переменных. Таким модификатором помечаются переменные, которые нужно пропускать при сериализации an object (это такой умный процесс, о котором, в принципе, и самостоятельно почитать можно…)*
* - данная статья написана мною на 17 уровне и до тех пор сериализация How процесс описан не был, поэтому instead of копипасты я советую, при необходимости, изучить его самостоятельно.
- Final и Volatile – когда речь идет о переменных, мы не можем одновременно сказать что она финальна (константа) и что несколько потоков имеют возможность ее изменить… Ведь она постоянна, и в любой момент поток может ее считать, но ни один поток не в силах изменить константу (Вселенский Надзирательный Совет не даст).
- Final и Abstract — классы и методы не могут быть одновременно абстрактными (что в большинстве случаев подразумевает необходимость их уточнения для реализации) и финальными, т.е. неизменяемыми. Получается, что в инструкции написано, How создать хороший прочный шлем из любого материала (абстрактная часть), но для этого в нем обязательно не должно быть отверстий (финальная обязательная часть, изменению не подлежит).
- Abstract и Static — абстрактный метод не может одновременно быть статическим or синхронизированным. Статический абстрактный метод не имеет смысла, ведь он мало того, что ничего не делает, так еще и принадлежит целому классу — бесполезная штука получается.
- Abstract и Syncronized — Howой смысл в синхронизации работы с методом, который ничего не делает?
GO TO FULL VERSION