Објашњени модификатори приступа у Јави

Шта су модификатори приступа?

Да ли сте икада желели да дефинишете како ће људи приступити неким вашим имањима? Не бисте желели да ико користи ваше доње рубље. Међутим, ваши блиски пријатељи и рођаци могу да користе ваш џемпер, а можда и аутомобил.

Слично начину на који постављате ниво приступа својим поседима, и Јава контролише приступ. Желите да дефинишете ниво приступа за променљиве, методе и класе у зависности од тога које друге класе желите да им приступите.

Јава пружа 4 нивоа модификатора приступа. То значи да можете променити приступ променљивој, методи или класи на 4 начина. Ова 4 начина су приватна, јавна, заштићена и подразумевана.

Ови модификатори приступа могу се применити на поља, методе и класе (класе су посебан случај, погледаћемо их на крају овог чланка). Ево кратког прегледа1 шта је Access Levelsза свако од њих Access Modifier:

Референца табеле модификатора приступа:

Табела модификатора приступа

Модификатор приватног приступа

Омогућава приступ променљивој или методи само у класи у којој је створена. Ниједна друга класа осим класе која је креирала променљиву или методу не може јој приступити. Ово је слично вашим унутрашњим органима. Они су доступни само власнику. Да бисте променљиву или метод учинили приватним, једноставно додајте кључну реч привате пре променљиве или типа методе. Користимо привате у примеру кодирања. Ако банка жели да обезбеди каматну стопу од 10% на своје зајмове, осигурала би да променљива каматне стопе (претпоставимо int int_rate;) остане приватна, јер ниједна друга класа не би покушала да јој приступи и промени је. На пример;

private String name;

Горњи пример креира променљиву која се назива наме и осигурава да јој је доступна само у класи из које је креирана.

Још један пример методе је

private void setAge(){ System.out.println("Set Age"); }

Горњи пример осигурава да је методу сетАге доступан само у класи из које је створен и нигде другде.

Модификатор јавног приступа

Модификатор јавног приступа је директна супротност модификатору приватног приступа. Класа, метода или променљива могу се прогласити јавним и то значи да су јој доступни из било које класе. Модификатор јавног приступа може се упоредити са јавном школом у којој свако може тражити пријем и бити примљен.

Јавној класи, методи или променљивој у било ком тренутку може се приступити из било које друге класе.

На пример, да бисте класу прогласили јавном, све што вам треба је:

public class Animal{ }

Као такав, класи Анимал може приступити било која друга класа.

public int age; public int getAge(){ }

Изнад су начини навођења променљиве и методе као јавни.

Подразумевани модификатор приступа

Подразумевани модификатор приступа разликује се од свих осталих модификатора приступа по томе што нема кључну реч. Да бисте користили задати модификатор приступа, једноставно не користите ниједан други модификатор приступа, а то једноставно значи да користите задати модификатор приступа.

На пример, да бисте користили подразумевани модификатор приступа за класу

class Bird{ }

То у основи значи да користите задати модификатор приступа. Подразумевани модификатор приступа омогућава променљивој, методи или класи приступ другим класама у истом пакету. Пакет је колекција сродних класа у директоријуму датотека. За више информација о пакетима погледајте одељак о пакетима.

Ниједној променљивој, методи или класи проглашеној за коришћење подразумеваног модификатора приступа не може приступити ниједна друга класа изван пакета из којег је декларисана.

int age; void setNewAge(){ }

Изнад су наведени неки начини коришћења подразумеваног модификатора приступа за променљиву или методу. Не заборавите, задати модификатор приступа нема кључну реч. Одсуство 3 друга модификатора приступа значи да користите задати модификатор приступа.

Модификатор заштићеног приступа

Модификатор заштићеног приступа уско је повезан са подразумеваним модификатором приступа. Модификатор заштићеног приступа има својства подразумеваног модификатора приступа, али уз мало побољшања.

Променљива и метода су једини који користе модификатор заштићеног приступа. Мало побољшање је то што класа изван пакета класе из које је променљива или метода декларисана може приступити поменутој променљивој или методи. То је могуће САМО ако наследи од Класе.

Класа из другог пакета која може видети заштићене променљиве или методе мора да је проширила класу која је креирала променљиве или методе.

Напомена без предности наслеђивања, подразумевани модификатор приступа има потпуно исти приступ као модификатор заштићеног приступа.

Примери коришћења модификатора заштићеног приступа приказани су испод:

protected int age; protected String getName(){ return "My Name is You"; }

Приступити модификаторима на часовима

Подразумевано класе могу имати само 2 модификатора:

  • јавно
  • без модификатора (подразумевани модификатор)

Дакле, то значи да се часови никада не могу поставити на privateили protected?

Ово је логично, зашто бисте желели да направите приватни час? Ниједна друга класа то не би могла да користи. Али понекад можете да уградите разред у други разред. Ове посебне класе, inner classesмогу се поставити на приватне или заштићене тако да им може приступити само околна класа:

public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }

У горњем примеру, само Carкласа може да користи Engineкласу. Ово може бити корисно у неким случајевима.

Друге класе никада не могу бити постављене на protectedили private, јер то нема смисла. protectedПриступ модификатор се користи за прављење ствари package-private, али са опцијом да буде доступан подврста. У јави не постоји концепт као што су „подпакети“ или „наслеђивање пакета“.