access modifiers java tutorial with examples
Този видео урок обяснява какво представляват модификаторите на достъп в Java и как да използвате модификатори по подразбиране, публичен, защитен и частен достъп с помощта на примери:
В Java имаме класове и обекти. Тези класове и обекти се съдържат в пакет. Освен това класовете могат да имат вложени класове, методи, променливи и т.н. Тъй като Java е обектно-ориентиран език за програмиране, трябва да следваме капсулацията, в която скриваме нежеланите подробности.
Java предоставя обекти, наречени „Модификатори на достъп или спецификатори на достъп“, които ни помагат да ограничим обхвата или видимостта на пакет, клас, конструктор, методи, променливи или други членове на данни. Тези модификатори на достъп също се наричат „Спецификатори на видимостта“.
Чрез използване на спецификаторите за достъп, определен метод или променлива на клас може да бъде ограничена за достъп или скрита от останалите класове.
=> Проверете ВСИЧКИ уроци за Java тук.
какво устройство извършва транслация на мрежови адреси (nat)?
Какво ще научите:
- Видео урок за модификатори на достъп в Java
- Достъп до модификатори в Java
- Видове модификатори на достъп в Java
- Заключение
Видео урок за модификатори на достъп в Java
Достъп до модификатори в Java
Спецификаторите на достъп също определят кои членове на данни (методи или полета) на клас могат да бъдат достъпни от други членове на данни на класове или пакети и т.н. За да се осигури капсулиране и повторна употреба, тези спецификатори / модификатори на достъп са неразделна част от обектно-ориентираното програмиране.
Модификаторите в Java са два вида:
# 1) Модификатори на достъпа
Модификаторите на достъп в Java ни позволяват да зададем обхвата или достъпността или видимостта на даден член, било то поле, конструктор, клас или метод.
# 2) Модификатори без достъп
Java също предоставя спецификатори без достъп, които се използват с класове, променливи, методи, конструктори и др. Спецификаторите / модификаторите за недостъп определят поведението на обектите към JVM.
Някои от спецификаторите / модификаторите без достъп в Java са:
- статични
- финал
- абстрактно
- преходен
- летлив
- синхронизирани
- местен
Ние разгледахме статични, синхронизирани и нестабилни ключови думи в нашите по-ранни уроци. Ще покрием останалите модификатори, които нямат достъп, в нашите бъдещи уроци, тъй като те са извън обхвата на този урок.
Видове модификатори на достъп в Java
Java предоставя четири вида спецификатори за достъп, които можем да използваме с класове и други обекти.
Това са:
# 1) По подразбиране: Когато не е посочено конкретно ниво на достъп, тогава се приема, че е „по подразбиране“. Обхватът на нивото по подразбиране е в пакета.
# 2) Публично: Това е най-често срещаното ниво на достъп и винаги, когато спецификаторът за публичен достъп се използва с обект, този конкретен обект е достъпен през целия от или извън класа, в рамките или извън пакета и т.н.
# 3) Защитени: Защитеното ниво на достъп има обхват, който е в пакета. Защитеният обект е достъпен и извън пакета чрез наследен клас или дъщерен клас.
# 4) Частно: Когато даден обект е частен, тогава този обект не може да бъде достъпен извън класа. Частен обект може да бъде достъпен само от класа.
Можем да обобщим модификаторите за достъп в следващата таблица.
Спецификатор за достъп | Вътрешен клас | Вътрешна опаковка | Подклас на външния пакет | Външен пакет |
---|---|---|---|---|
Частен | Да | Недей | Недей | Недей |
По подразбиране | Да | Да | Недей | Недей |
Защитена | Да | Да | Да | Недей |
Публично | Да | Да | Да | Да |
След това ще обсъдим подробно всеки от тези спецификатори за достъп.
Спецификатори за достъп по подразбиране
Модификатор на достъп по подразбиране в Java няма конкретна ключова дума. Когато модификаторът на достъп не е посочен, тогава се приема, че е по подразбиране. Обектите като класове, методи и променливи могат да имат достъп по подразбиране.
Класът по подразбиране е достъпен вътре в пакета, но не е достъпен извън пакета, т.е.всички класове вътре в пакета, в които е дефиниран класът по подразбиране, могат да имат достъп до този клас.
По същия начин метод или променлива по подразбиране също е достъпна вътре в пакета, в който са дефинирани, а не извън пакета.
Програмата по-долу демонстрира модификатора за достъп по подразбиране в Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args[]) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Изход:
В горната програма имаме клас и метод вътре в него, без модификатор на достъп. Следователно както класът, така и дисплеят на метода имат достъп по подразбиране. Тогава виждаме, че в метода можем директно да създадем обект от класа и да извикаме метода.
Модификатор на публичния достъп
Клас или метод или поле с данни, посочено като „обществено“, е достъпно от всеки клас или пакет в програмата Java. Публичният обект е достъпен както в пакета, така и извън него. По принцип модификаторът на публичния достъп е модификатор, който изобщо не ограничава обекта.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args[]) { A obj = new A (); obj.display(); } }
Изход:
Спецификатор на защитен достъп
Спецификаторът на защитения достъп позволява достъп до обекти чрез подкласове от класа, в който е деклариран обектът. Няма значение дали класът е в същия пакет или в различен пакет, но докато класът, който се опитва да осъществи достъп до защитен обект, е подклас на този клас, той е достъпен.
Имайте предвид, че клас и интерфейс не могат да бъдат защитени, т.е.не можем да прилагаме защитени модификатори към класове и интерфейси.
Модификаторът на защитения достъп обикновено се използва в отношенията родител-дете.
Програмата по-долу демонстрира използването на модификатора Protected Access в Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args[]) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Изход:
Модификатор на частния достъп
Модификаторът „частен“ достъп е този, който има най-ниското ниво на достъпност. Методите и полетата, които са декларирани като частни, не са достъпни извън класа. Те са достъпни само в класа, чиито членове са тези частни субекти.
Имайте предвид, че частните обекти дори не се виждат от подкласовете на класа. Модификатор за частен достъп осигурява капсулиране в Java.
Някои точки, които трябва да се отбележат по отношение на модификатора за частен достъп.
- Модификаторът за частен достъп не може да се използва за класове и интерфейси.
- Обхватът на частните обекти (методи и променливи) е ограничен до класа, в който са декларирани.
- Клас с частен конструктор не може да създаде обект на класа от друго място като основния метод. (Повече подробности за частните конструктори са обяснени в нашия предишен урок).
Долната програма Java използва модификатор за частен достъп.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args[]){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Изход:
Горната програма дава грешка при компилация, тъй като се опитваме да получим достъп до членове на частни данни, използвайки обекта на класа.
Но има метод за достъп до променливи на частни членове. Този метод използва getters и setters в Java. Така че ние предоставяме публичен метод за получаване в същия клас, в който е декларирана частна променлива, така че getter да може да прочете стойността на частната променлива.
По същия начин предоставяме метод на публичен сетер, който ни позволява да зададем стойност за частната променлива.
Следващата Java програма демонстрира използването на методите getter и setter за частни променливи в Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String[] main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Изход:
приложения, които шпионират други телефони
Горната програма има клас с променлива с частен низ. Предоставяме публичен метод на член getName, който връща стойността на частната променлива. Също така предоставяме публичен метод setName в класа, който приема String като аргумент и го присвоява на частната променлива.
Тъй като и двата метода са публични, можем лесно да получим достъп до тях, като използваме обекта на класа. По този начин можем да преодолеем грешката при компилацията, която се появява всеки път, когато се опитваме да осъществим достъп до членовете на частните данни на класа.
често задавани въпроси
В # 1) Колко модификатори на достъп има в Java?
Отговор: Java предоставя четири модификатора, т.е.по подразбиране, публичен, защитен и частен.
В # 2) Какво представляват модификаторите за достъп и модификаторите без достъп в Java?
Отговор: Модификаторите на достъп дефинират видимостта или обхвата на програмен обект като клас или метод, променлива или конструктор. Модификаторите без достъп определят поведението на обект. Например, синхронизиран метод или блок показва, че може да работи в среда с много нишки, а последната променлива показва, че е константа.
В # 3) Защо са важни спецификаторите за достъп?
Отговор: Модификаторите указват кой клас може да има достъп до кои други класове или методи или променливи. Използвайки спецификатори за достъп, можем да ограничим достъпа на различни класове, методи, конструктори и променливи, а също така да осигурим капсулиране и повторна употреба на Java обекти.
В # 4) Кои модификатори не се използват за класа?
Отговор: Защитени и частни модификатори не се използват за клас.
В # 5) Какво представляват модификаторите без достъп?
Отговор: Модификаторите, които дефинират поведението на обекти като клас, метод или променливи, с които са свързани, са модификатори без достъп. Както подсказва името, те не определят достъпа. Java предоставя различни модификатори без достъп като статични, окончателни, синхронизирани, летливи, абстрактни и т.н.
Повече за модификаторите на видимост
Java предоставя много модификатори за достъп до променливата, методите и конструкторите.
В Java има 4 типа променливи за достъп:
- Частен
- Публично
- По подразбиране
- Защитена
# 1) Частно
Ако променлива е декларирана като частна, тогава тя може да бъде достъпна в рамките на класа. Тази променлива няма да бъде достъпна извън класа. Така че външните членове нямат достъп до частните членове.
Забележка: Класовете и интерфейсите не могат да бъдат частни.
# 2) Публично
Методите / променливите с публични модификатори могат да бъдат достъпни от всички останали класове в проекта.
# 3) Защитена
Ако променлива е декларирана като защитена, тогава тя може да бъде достъпна в рамките на същите класове пакети и подкласове на други пакети.
Забележка: Модификаторът на защитен достъп не може да се използва за клас и интерфейси.
# 4) Модификатор на достъп по подразбиране
Ако променлива / метод е дефиниран без ключова дума за модификатор на достъп, тогава това ще има достъп по подразбиране за модификатор.
Модификатори на достъпа | Видимост |
---|---|
Публично | Видимо за всички класове. |
Защитена | Видимо за класове с в пакета и подкласовете на другия пакет. |
Без модификатор на достъп (по подразбиране) | Видимо за класовете с пакета |
частни | Вижда се с в класа. Не е достъпен извън класа. |
Демо клас:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
Достъп до членовете на класа в друг клас:
най-добрият youtube към mp4 конвертор
public class TestAccessModifier { public static void main(String[] args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Изход:
Достъп до публичните членове:
public class TestAccessModifier { public static void main(String[] args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Изход:
Боби
Важни точки:
- Спецификаторите на достъп определят видимостта на класа.
- Ако не е спомената ключова дума, това е модификатор за достъп по подразбиране.
- Четири модификатора в Java включват публичен, частен, защитен и по подразбиране.
- Частни и защитени ключови думи не могат да се използват за класове и интерфейси.
Заключение
В този урок разгледахме подробно модификаторите на Access в Java. Java предоставя четири типа модификатори на достъп или спецификатори на видимост, т.е.по подразбиране, публичен, частен и защитен. Модификаторът по подразбиране няма свързана ключова дума.
Когато клас или метод или променлива няма свързан спецификатор за достъп, предполагаме, че има достъп по подразбиране. Модификаторът за публичен достъп позволява достъп до всичко, независимо дали в класа или извън класа или пакета. Няма ограничение за достъп в случай на публичния модификатор.
Спецификаторът на защитена видимост позволява достъп само до подкласове, наследяващи класа, в който са декларирани защитени членове. Модификаторът за частен достъп позволява най-малко достъпността с членовете на частните данни да бъде достъпна само в рамките на класа.
Модификаторите ограничават обхвата на членовете на данните като класове, конструктори, методи и променливи и определят ограничението до кои класове или пакети могат да имат достъп. Спецификаторите на достъп насърчават капсулирането и повторната употреба в Java. Имайте предвид, че класовете и интерфейсът не могат да бъдат защитени или частни.
=> Посетете тук, за да научите Java от нулата.
Препоръчително четене
- Урок за отражение на Java с примери
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Въведение в езика за програмиране на Java - видео урок
- Java SWING Урок: Контейнер, компоненти и обработка на събития
- Java String с String Buffer и String Builder Tutorial
- Разполагане на Java: Създаване и изпълнение на Java JAR файл
- Java виртуална машина: Как JVM помага при стартирането на Java приложение
- Урок за Java Collections Framework (JCF)