Модификаторы доступа в Java используются для указания уровней доступа для классов, методов переменных и конструктора.
по умолчанию: область применения модификатора доступа по умолчанию ограничена только пакетом. Если мы не упомянем какой-либо модификатор доступа, он будет действовать как модификатор доступа по умолчанию.
Давайте рассмотрим практический пример, чтобы лучше понять это.
12345678910 | package packageOneDefault; public class DefaultClassOne { //Здесь я не упомянул ни одного модификатора, поэтому он действует как модификатор по умолчанию.protected int myMethod(int x){return x;}} |
12345678910111213141516 | пакет packageTwoDefault; импортировать packageOneDefault.DefaultClassOne; public class DefaultClassTwo {public static void main(String args[]){//Создан объект ClassOneDefaultClassOne obj = new DefaultClassOne();//Попытка получить доступ к методу ClassOne по умолчанию, который находится в packageOne//Вы можете найти ошибку at obj.myMethod obj.myMethod(10);}} |
private: Область действия модификатора private доступа находится только внутри классов.
Примечание. Класс или интерфейс не могут быть объявлен как частный
1234567891011121314151617 | пакет packageThreePrivate; открытый класс PrivateClassOne { частный int x = 100; int y = 200; private int myMethod(int a){return a;}int myMethodOne(int a){return a;}} |
1234567891011121314151617181920 | пакет packageThreePrivate; открытый класс PrivateClassTwo {public static void main(String args[]){ PrivateClassOne obj = new PrivateClassOne(); //Здесь я пытаюсь получить доступ к частному члену данных и частному методу ClassOne//Выдает ошибку компиляции System.out.println(obj.x);System.out.println(obj.myMethod(1000));//Здесь Я пытаюсь получить доступ к элементу данных по умолчанию и методу ClassOne по умолчанию //Нет ошибки. Мы можем удобно получить доступ к модификатору по умолчанию с помощью packageSystem.out.println(obj.y);System.out.println(obj.myMethodOne(2000)); }} |
protected. Область действия модификатора защищенного доступа находится внутри пакета, а также за пределами пакета только посредством наследования.
Примечание. Класс нельзя объявлять как protected
123456789 | package packageFourProtected; открытый класс ProtectedClassFour { защищенный int myMethod(int a){return a;}} |
123456789101112 | пакет пакетFiveProtected; импортировать packageFourProtected.ProtectedClassFour; открытый класс ProtectedClassFive extends ProtectedClassFour{public static void main(String args[]){ProtectedClassFive obj = new ProtectedClassFive();System.out.println(obj.myMethod(100));} } |
публично: Область действия модификатора общего доступа везде. Он не имеет ограничений. К элементам данных, методам и классам, объявленным общедоступными, можно получить доступ откуда угодно. размер вкладки: 4; -webkit-размер вкладки: 4; размер вкладки: 4; размер шрифта: 12 пикселей! важно; высота строки: 15 пикселей! важно> пакет packageSixPublic; public class PublicClassSix { //Здесь я не упомянул ни одного модификатора, поэтому он действует как модификатор по умолчанию. public int myMethod(int x){return x; } }
12345678910 | пакет packageSixPublic; public class PublicClassSix { //Здесь я не упомянул ни одного модификатора, поэтому он действует как модификатор по умолчанию.public int myMethod(int x){return x;}} |
12345678910111213141516 | пакет packageSevenPublic; импортировать packageSixPublic.PublicClassSix; public class PublicClassSeven {public static void main(String args[]){//Создан объект ClassOnePublicClassSix obj = new PublicClassSix();//Попытка получить доступ к публичному методу PublicClassSix, который находится в packageSixPublic obj.myMethod(10); //Мы попробовали тот же пример с Default и столкнулись с ошибкой. Надеюсь, вы помните}} |
Просмотрите эту простую таблицу, чтобы легко понять модификаторы доступа
TAG: qa