JavaRush /Курсхо /All lectures for TG purposes /Модификаторҳои методҳо

Модификаторҳои методҳо

All lectures for TG purposes
Сатҳи , Дарс
дастрас

1. Модификаторҳои дастрасӣ

Пеш аз ҳар як метод барномасоз метавонад модификаторҳои дастрасиро нишон диҳад. Ба онҳо калимаҳои калидӣ дохил мешаванд: public, protected, private.

Ин «модификаторҳои дастрасӣ» имкон медиҳанд, ки дастрасӣ ба метод аз дигар классҳо маҳдуд карда шавад.

Масалан, агар пеш аз эълони метод калимаи калидии private навишта шавад, ин методро танҳо аз ҳамон класс, ки дар он эълон шудааст, даъват кардан мумкин аст. Калимаи калидии public даъват аз ҳар як методи ҳар як классро иҷозат медиҳад.

Ҳамагӣ чунин модификаторҳо 3 ҳастанд, вале намудҳои дастрасӣ ба метод — 4, чунки набудани модификатори дастрасӣ низ чизеро нишон медиҳад.

Дастрасӣ аз...
Модификаторҳо Ҳар як класс Класси-меросгиранда Пакети худ Класси худ
public Ҳаст Ҳаст Ҳаст Ҳаст
protected Не Ҳаст Ҳаст Ҳаст
бе модификатор Не Не Ҳаст Ҳаст
private Не Не Не Ҳаст

1. Модификатори public.

Ба метод (тағйирёбанда ё класс), ки бо модификатори public қайд шудааст, аз ҳар ҷои барнома муроҷиат кардан мумкин аст. Ин баландтарин дараҷаи кушодагист – ҳеч гуна маҳдудият нест.

2. Модификатори private.

Ба метод (тағйирёбанда ё класс), ки бо модификатори private қайд шудааст, танҳо аз ҳамон класс, ки эълон шудааст муроҷиат кардан мумкин аст. Барои ҳамаи дигар классҳо методи қайдшуда (ё тағйирёбанда) – нонамоён ва «гуё вуҷуд надорад». Ин баландтарин дараҷаи басташавист – танҳо барои классҳои худ.

3. Без модификатор (модификатори пешфарз).

Агар метод (ё тағйирёбанда) бо ҳеҷ модификаторе қайд нашуда бошад, онҳо бо «модификатори пешфарз» қайдшуда ҳисобида мешаванд. Тағйирёбандаҳо ё методҳо бо чунин модификатор (яъне умуман бе ягон) барои ҳамаи классҳои пакет, ки дар он эълон шудаанд, намоён мебошанд. Ва танҳо барои онҳо. Ин модификаторро баъзан package ҳам меноманд, ишора мекунанд, ки дастрасӣ ба тағйирёбандаҳо ва методҳо барои тамоми пакети, ки класс дар он ҷойгир шудааст, кушода аст

4. Модификатори protected.

Агар метод бо модификатори protected қайд шуда бошад, ба он аз ҳамон класс, ҳамон пакет ва классҳои меросгиранда (классҳое, ки аз класи, дар он метод эълон шудааст, мерос гирифтаанд) муроҷиат кардан мумкин аст. Ин мавзуъро дар квест Java Core дида мебароем.

То охири квести Java Syntax шумо метавонед ба ҳамаи методҳоятон (инчунин ба классҳо ва тағйирёбандаҳои класс) модификатори public гузоред. Ба шумо дигар модификаторҳо лозим мешаванд, вақте ки мо фаъолона ООП-ро омӯзиш мекунем.

Барои чӣ модификаторҳои дастрасӣ лозиманд?

Ҳама дар бораи лоиҳаҳои калон меравад, ки онҳоро даҳҳо ва садҳо барномасозон ҳамзамон менависанд.

Баъзан ҳолатҳое ҳол мешаванд, ки барномасоз мехоҳад як методи бузурги бениҳоят калони класси худро ба қисмҳо тақсим кунад ва қисме аз кодро ба методҳои ёрирасон барорад. Вале якҷоя бо ин ӯ намехоҳад, ки барнамасозони дигар ин методҳои ёрирасонро даъват кунанд, зеро ки код класси ӯ метавонад нодуруст кор кунад.

Баҳри ин чунин модификаторҳои дастрасӣ ихтироъ шуданд. Метод ёрирасонро бо калимаи private қайд кард, ва ҳеҷ як коди берунӣ ба ҷуз аз класси шумо методи ёрирасони шуморо нахоҳад дид.



2. Калимаи калидии static

Калимаи калидии static методро ба статикӣ табдил медиҳад. Ин чист, мо баъдтар баррасӣ мекунем, ҳоло танҳо якчанд фактҳоро дар бораи методҳои статикӣ дар хотир дорем.

Факт 1. Методҳои статикӣ ба ҳеҷ кадом объект вобастагӣ надоранд, вале ба класси, ки дар он эълон шудаанд, тааллуқ доранд. Барои даъват кардани методи статикӣ, бояд нависем:

ИмяКласса.имяМетода()

Мисолҳои методҳои статикӣ:

Имя класса Имя статического метода
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Имя класса пеш именем статического метода навистан мумкин нест, агар шумо методи статикиро аз дохили — ҳамон класс даъват кунед. Маҳз барои ҳамин шумо ба ҳар дафъа Solution пеш аз номҳои методҳои даъватшаванда навиштан лозим нест.

Факт 2. Методҳои статикӣ наметавонанд ба методҳои нестатикӣ муроҷиат кунанд дар ҳамин класс. Методҳои статикӣ танҳо ба методҳои статикӣ муроҷиат карда метавонанд. Аз ин рӯ, ҳамаи методҳое, ки мо мехоҳем аз методи main даъват кунем, мо ҳамчун статикӣ эълон мекунем.

Чаро? Шумо худ ба ин савол ҷавоб дода метавонед, вақте ки ООП-ро оғоз мекунед ва мефаҳмед, ки методҳои статикӣ чӣ гуна сохта шудаанд.



3. Калимаи калидии throws

Боз як калимаи калидӣ ҳаст, ки шумо шояд онро бо эълони метод дида бошед — ин калимаи throws мебошад. Ин калима, дар фарқият аз модификаторҳои дастрасӣ ва калимаи калидии static, пас аз параметрҳои метод ҷойгир мешавад:

public static тип имя(параметры) throws Exception
{
  код метода
}

Чӣ маъно дорад, мо онро каме баъдтар дида мебароем, вақте ки истисноҳоро меомӯзем.

Агар ҳамаашро бо назардошти он гӯем, метавон гуфт, ки дар методе, ки бо калимаи throws қайд шудааст, хатогиҳо (истисноҳо) аз навъи Exception (ва классҳое, ки аз он мерос гирифтаанд) метавонанд рух диҳанд. Агар дар класс хатогиҳои чанд намуд ба вуҷуд омаданд, бояд ҳамаи намудҳоро бо вергул номбар кард.


4. Метод main

Сатр, ки дар он метод бо тамоми модификаторҳо эълон мешавад, ба он таъсир мерасонад, ки чӣ тавр ин метод аз дигар классҳо ва методҳо даъват мешавад. Намуди натиҷае, ки он бармегардонад ва кадом хатогиҳо ҳангоми кори он имконпазир мебошанд.

Ин гуна сатрро эълони метод меноманд ва он шакли умумии зеринро дорад:

модификаторҳои дастрасӣ static тип имя(параметры) throws исключения
Шакли умумии эълони метод

Ки модификаторҳои дастрасӣ — ин public, protected, private ё ҳеҷ чиз;

static гузошта мешавад, агар метод статикӣ бошад (барои методҳои нестатикӣ вуҷуд надорад)

тип — навъи натиҷаи функсия (void агар натиҷа вуҷуд надошта бошад)

Ҳоло эҳтимолан шумо мефаҳмед, ки чӣ маъно дорад ҳамаи калимаҳои калидии ҳангоми эълони методи main:

public static void main(String[] args) throws Exception
Эълони метода main

Дастрасӣ ба методи main() аз ҳар як класс имконпазир аст, инро калимаи public мегӯянд.

Метод статикӣ аст (онро равшан ҳамчун Solution.main() даъват кардан мумкин аст).

Метод main ҳеҷ гуна натиҷае барнамегардонад. Навъи натиҷа — void (навъи холӣ/маҳкамшуда)

Методи main параметрҳоро қабул мекунад(!): массиви сатрҳо. Ва номи args ба «аргументҳои барнома» ишора мекунад. Ҳангоми оғоз кардани барнома ба он параметрҳо гузаронидан мумкин аст — массиви сатрҳо. Онҳо дар массиви args методи main() мавҷуд хоҳанд буд.

Дар методи main() хатогиҳои коркарднашудаи навъи Exception (ё фарзандон) метавонанд ба вуҷуд оянд.


Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION