JavaRush /Java блогу /Random-KY /Модификаторлор же Java дүйнөсүндө сыйкырларды кантип чыга...
Petr Gorskin
Деңгээл
Москва

Модификаторлор же Java дүйнөсүндө сыйкырларды кантип чыгаруу керек

Группада жарыяланган
Жакшы галактикалык күн, жолдоштор! Бул менин биринчи планеталар аралык кол жазмасым жана мен инженер болгондуктан, кээ бир түшүнүктөрдүн чечмелөөнү жерден тышкаркы тилде жасоого болот.
Модификаторлор же Java дүйнөсүндөгү сыйкырларды кантип чыгаруу керек - 1
Киришүү Менин оюмча, Java эшиктери бар чексиз коридор сыяктуу (пакет). Бул эшиктердин ар биринин артында бош орун жана an objectтерди түзүү боюнча нускамалар (класстар) менен сыйкырдуу түрмөктөрдүн тоосу сакталган файлдык шкаф бар. Ар бир түрмөк мүнөздөмөлөрдүн (өзгөрмөлөрдүн) жана жөндөмдөрдүн (методдордун) жыйындысын - класстын өзүндө же анын негизинде чогултулган an objectиде аткарылуучу аракеттерди (талааларды) сүрөттөйт. Бул этапта өзүбүздү сыйкырчылар катары элестетип, таптакыр жаңы инструкцияны (класс) түзүүгө аракет кылалы. Ошентип: Модификаторлор же Java дүйнөсүндө сыйкырларды кантип чыгаруу керек - 2Келгиле, акылмандык эликсирин ичели (негиздерин үйрөнүп алалы) жана нускамаларды жаза баштайлы. Жеткorктүү жана жеткorксиз модификаторлор Келгиле, ар кандай инструкция жана анын негизинде түзүлгөн an object, ошондой эле анын мүнөздөмөлөрү жана жөндөмдөрү алгач сыйкырдуу сыйкырдуу болот деп элестетип көрөлү, б.а. алар-га модификаторлордун конкреттуу топтому бе-рилет. Келгиле, мүмкүн болгон сыйкырлар боюнча колдонмо түзүүгө аракет кылалы.
  1. Класстын, an objectтин же талаанын жеткorктүүлүгүн сүрөттөгөн мүмкүндүк модификатору талап кылынат: ал жок учурда JVM (бул универсалдуу сыйкырдын булагы) автоматтык түрдө пакетке демейки идентификаторду дайындайт.

    Экинчи модификатордон баштап жеткorктүү эмес модификаторлор бар, алар милдеттүү эмес жана бири-бирине карама-каршы келиши мүмкүн (бирок биринчи кезекте).

  2. Static өзгөрткүч класс, an object же талаа статикалык экенин көрсөтөт. Бирок бул эмнени билдирет? Негизинен биз аны талааларда сынап көрөбүз.

    Статикалык өзгөрмөлөр класстын өзгөрмөлөрү деп аталат жана ошол класстын бардык инстанциялары үчүн уникалдуу. Статикалык методдорду алар жарыяланган an object түзбөй эле чакырса болот. Статикалык класстар бир классты экинчи класска уялаганда колдонулат жана ички класс менен тышкы класстын өз ара аракеттенүү принциби методдорго окшош (бул өзүнчө талкуунун темасы). Объекттин ичинде өзүнчө блок катары да колдонсо болот.

  3. Акыркы модификатор өзгөрмөгө анын туруктуу экенин натыйжалуу көрсөтөт. Методдор үчүн - мурастоо учурунда аларды жокко чыгарууга болбойт, ал эми класстар үчүн бул андан мураска алынбай тургандыгынын белгиси (өзгөрбөс).

    Статикалык жана акыркы өзгөрткүчтөр класстарга, an objectтерге жана талааларга колдонулат. Бирок, алардын айрымдарына гана тиешелүү модификаторлор бар (же алардын бир бөлүгүнө тең, анткени өзгөрмө да, ыкма да талаа болуп саналат, бирок бардык модификаторлор экөөнө тең тиешелүү эмес). Аналогия келтирсек, ылдамдык үчүн өтүк менен колкапты гана сыйкырлоого болот (алардын ылдамыраак кыймылдашы үчүн), бирок ылдамдык үчүн калпакты сыйкырлоонун мааниси жок (Жана Универсалдуу Байкоочу Кеңеш (түзүүчү) буга жол бербейт).

  4. Абстракт өзгөрткүч методдорго жана класстарга гана тиешелүү . Абстракттуу метод – ишке ашыруусу (денеси) жок метод.

    Эгерде класс абстракттуу деп белгиленсе, анда ал абстракттуу ыкмаларды камтыйт же ошол класстын инстанцияларын түзүүгө жол бербөө үчүн жасалат. Аналогияны келтирсек, нускамалардын ортосунда сиз "Объектти боёо" деген рубриканы көрө аласыз, андан кийин эч кандай сүрөттөлүш жок. Ошол. бул инструкцияны колдонуу менен сиз an objectти түзө аласыз жана аны боёсоңуз да болот, бирок бул конкреттүү инструкция кандайча айтылbyte (ушул an objectтин негизинде кызыл an objectти түзүү боюнча өз инструкцияңызды жазыңыз жана аны кантип боёо керектигин сүрөттөп бериңиз).

Көп жиптүү чөйрөдө иштөөдө атайын модификаторлор колдонулушу мүмкүн:
  1. Синхрондолгон өзгөрткүч методдор үчүн гана колдонулат. Анын болушу бир эле учурда бир жип аны аткара аларын көрсөтүп турат. Объекттин ичиндеги codeдун өзүнчө блогу катары да колдонсо болот (синхрондоштуруу an objectисин көрсөтүү менен).

  2. Учма өзгөргүч - өзгөрмөлөр үчүн гана . Аны бир эле учурда бир нече жиптер колдоно ала турган өзгөрмөлөр үчүн колдонуу сунушталат. Мындай модификатору бар өзгөрмө ал өзгөргөн сайын процессордун кэшинен негизги эске заматта көчүрүлүп, параллелдүү жиптерге эң акыркы маанини алууга мүмкүндүк берет.

    Белгилей кетчү нерсе, өзгөрмө бир гана жип өзгөрмөгө жаза алган, ал эми калгандары андан гана окуй алган учурларда колдонулат. Башка учурларда, синхрондоштурулган модификаторду туруксуз өзгөрмөгө жазган методдорго кошуу жакшы.

  3. Өтмө модификатор – өзгөрмөлөр үчүн гана . Бул модификатор an objectти сериялаштырууда өткөрүп жиберүү керек болгон өзгөрмөлөрдү белгилейт (бул ушунчалык акылдуу процесс, негизи бул тууралуу өзүңүз окуй аласыз...)*

    * - Мен бул макаланы 17-деңгээлде жаздым жана ага чейин сериялаштыруу процесс катары сүрөттөлгөн эмес, андыктан көчүрүү-жабыштыруунун ордуна, керек болсо, аны өзүңүз изилдеп чыгууну сунуштайм.

Конфликттүү модификатор жуптары Модификаторлордун түрдүү класстарга, an objectтерге жана талааларга колдонулушунан тышкары, карама-каршы жуптар түшүнүгү да бар. Туулганы күч менен сыйкырлоо аны оор кылат дейли, ошол эле учурда жеңил болсун деп сыйкырдагың келет. Бири экинчисине туура келбейт.
  1. Final жана Volatile - өзгөрмөлөргө келгенде, биз бир эле учурда аны акыркы (туруктуу) деп айта албайбыз жана бир нече жиптер аны өзгөртүү мүмкүнчүлүгүнө ээ... Анткени, ал туруктуу жана каалаган учурда жип аны окуй алат. , бирок бир да жип константты өзгөртө алbyte (Универсалдуу Байкоочу Кеңеш буга жол бербейт).
  2. Жыйынтыктоочу жана абстракттуу - класстар жана методдор абстракттуу (бул көпчүлүк учурларда аларды ишке ашыруу үчүн тактоо зарылдыгын билдирет) жана жыйынтыктоочу боло алbyte, б.а. өзгөрүлгүс. Көрсө, көрсөтмөлөр ар кандай материалдан (абстракттуу бөлүгү) жакшы бышык туулганы кантип жасоо керек экенин айтат экен, бирок бул үчүн анда эч кандай тешик болбошу керек (акыркы милдеттүү бөлүгүн өзгөртүүгө болбойт).
  3. Абстракттуу жана статикалык - абстракттуу ыкма бир эле учурда статикалык же синхрондоштурууга болбойт. Статикалык абстракттуу методдун мааниси жок, анткени ал эч нерсе кылбай эле койбостон, бүтүндөй бир класска таандык – натыйжасы пайдасыз нерсе.
  4. Абстракттуу жана синхрондуу - эч нерсе кылбаган ыкма менен ишти синхрондоштуруунун мааниси эмнеде?
Жыйынтыктоо Ошентип, модификаторлордун сүрөттөлүшү бүттү, бардык чыр-чатактар ​​чечилди жана эми сиз натыйжаны алдамчылык баракчасы - сыйкырчылык диаграммасы менен бириктире аласыз: Модификаторлор же Java дүйнөсүндөгү сыйкырларды кантип чыгаруу керек - 3Жыйынтыктап айтканда, бул макаланы жазуу менин каалоомдун ишке ашуусу болгонун айткым келет. модификаторлорду изилдөө. Тажрыйба ийгorктүү болобу же жокпу, аны сиз чечесиз. Мен аны өркүндөтүү/түзөтүү боюнча сунуштарыңызды күтүп жатам жана, балким, биргелешип, биз аны башталгыч java оюнчулары үчүн абдан пайдалуу окуу куралына айландырабыз.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION