JavaRush /Java Blog /Random-TL /Mga modifier o kung paano mag-cast ng mga enchantment sa ...
Petr Gorskin
Antas
Москва

Mga modifier o kung paano mag-cast ng mga enchantment sa Java world

Nai-publish sa grupo
Magandang galactic day, mga kasama! Ito ang aking unang manuskrito sa pagitan ng mga planeta, at dahil ako ay isang inhinyero, ang interpretasyon ng ilang mga konsepto ay maaaring gawin sa isang extraterrestrial na wika.
Модификаторы or How накладывать чары в мире Java - 1
Panimula Sa aking opinyon, ang Java ay parang walang katapusang koridor na may mga pintuan (package). Sa likod ng bawat isa sa mga pintong ito ay may libreng espasyo at isang file cabinet kung saan nakaimbak ang isang bundok ng mahiwagang mga scroll na may mga tagubilin (mga klase) para sa paglikha ng mga bagay. Ang bawat scroll ay naglalarawan ng isang hanay ng mga katangian (mga variable) at kakayahan (mga pamamaraan) - mga aksyon (mga patlang) na isinagawa sa alinman sa klase mismo o isang bagay na binuo sa batayan nito. Sa yugtong ito, isipin natin ang ating sarili bilang mga wizard at subukang lumikha ng isang ganap na bagong pagtuturo (klase). Kaya: Модификаторы or How накладывать чары в мире Java - 2Uminom tayo ng elixir of wisdom (matutunan ang mga pangunahing kaalaman) at simulan ang pagsulat ng mga tagubilin. Mga modifier ng access at non-access Isipin natin na ang anumang pagtuturo at isang bagay na nilikha sa batayan nito, pati na rin ang mga katangian at kakayahan nito, ay sa simula ay magically enchanted, i.e. bibigyan sila ng mga partikular na hanay ng mga modifier. Subukan nating gumawa ng gabay sa mga posibleng enchantment.
  1. 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).

  2. 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.

  3. 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).

  4. Модификатор Abstract применим только к методам и классам. Абстрактный метод — это метод без реализации (тела).

    Если класс помечается How абстрактный, он либо содержит абстрактные методы, либо это делается для того чтобы запретить создание экземпляров этого класса. Если проводить аналогию, посреди инструкции можно увидеть заголовок «Раскраска an object», после которого нет описания. Т.е. по этой инструкции можно создать an object и раскрасить его тоже можно, но в конкретно этой инструкции не написано How (пишите свою инструкцию по созданию красного an object на основе этого an object и опишите How его раскрашивать).

При работе в многопоточной среде могут использоваться специальные модификаторы:
  1. Модификатор Syncronized используется только для методов. Его наличие свидетельствует о том, что его может одновременно выполнять лишь один поток. Также может использоваться в виде отдельного блока codeа внутри an object (с указанием an object синхронизации).

  2. Модификатор Volatileтолько для переменных. Его рекомендуется использовать для переменных, которые могут быть одновременно использоваться несколькими потоками. Переменная с таким модификатором при каждом изменении моментально копируется из кэша процессора в основную память, позволяя параллельным потокам получать самое «свежее» meaning.

    Стоит отметить, что volatile применим в тех случаях, когда только один поток может записывать в переменную, а остальные лишь читают из нее. Для остальных случаев лучше вешать модификатор synchronized на методы, которые записывают в волатильную переменную.

  3. Модификатор Transientтолько для переменных. Таким модификатором помечаются переменные, которые нужно пропускать при сериализации an object (это такой умный процесс, о котором, в принципе, и самостоятельно почитать можно…)*

    * - данная статья написана мною на 17 уровне и до тех пор сериализация How процесс описан не был, поэтому instead of копипасты я советую, при необходимости, изучить его самостоятельно.

Конфликтующие пары модификаторов Помимо применимости модификаторов к различным классам, an objectм и полям существует также понятие конфликтующих пар. Допустим, наложение на шлем чар прочности делает его тяжелым, и одновременно вы хотите зачаровать его на легкость. Одно с другим не вяжется.
  1. Final и Volatile – когда речь идет о переменных, мы не можем одновременно сказать что она финальна (константа) и что несколько потоков имеют возможность ее изменить… Ведь она постоянна, и в любой момент поток может ее считать, но ни один поток не в силах изменить константу (Вселенский Надзирательный Совет не даст).
  2. Final и Abstract — классы и методы не могут быть одновременно абстрактными (что в большинстве случаев подразумевает необходимость их уточнения для реализации) и финальными, т.е. неизменяемыми. Получается, что в инструкции написано, How создать хороший прочный шлем из любого материала (абстрактная часть), но для этого в нем обязательно не должно быть отверстий (финальная обязательная часть, изменению не подлежит).
  3. Abstract и Static — абстрактный метод не может одновременно быть статическим or синхронизированным. Статический абстрактный метод не имеет смысла, ведь он мало того, что ничего не делает, так еще и принадлежит целому классу — бесполезная штука получается.
  4. Abstract и Syncronized — Howой смысл в синхронизации работы с методом, который ничего не делает?
Подведение итогов Итак, описание модификаторов закончилось, все конфликты разобраны и теперь можно закрепить полученный результат шпаргалкой — схемой зачарований: Модификаторы or How накладывать чары в мире Java - 3В завершение хочу сказать, что написание этой статьи явилось реализацией моего желания изучить модификаторы. Успешный опыт or нет — на ваш суд. Я жду ваших предложений по ее улучшению/исправлению и, возможно совместно мы сделаем из нее полезнейший мануал для начинающих джавистов.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION