Модификатор доступа (Access modifiers) в Java
1. Modifier в Java
Существует два вида modifier в java: access modifiers и non-access modifiers.
Аccess modifiers в java определяют общедоступность (Рамки) в данные полей, методов, конструкторов или класса.
Есть 4 вида java access modifiers:
Аccess modifiers в java определяют общедоступность (Рамки) в данные полей, методов, конструкторов или класса.
Есть 4 вида java access modifiers:
- private
- (По умолчанию)
- protected
- public
2. Обзор access modifier
Таблица ниже иллюстрирует общее понятие про использование access modifier.
Access Modifier | Доступ внутри класса? | Доступ внутри пакета? | Доступ снаружи пакета подклассом? | Доступ снаружи пакета не в подклассе? |
private | Y | |||
по умолчанию | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
Можете понять более детально по следующим примерам:
3. private access modifier
private access modifier только позволяет получить доступ внутри одного класса.
Вы не можете получить доступ к полю private вне класса, который определяет его как private. Java оповестить об ошибке во время компиляции класса.
4. private constructor
Если вы создаете класс и имеете конструктор private, вы не можете создать объект этого класса из того конструктора private, вне этого класса. Посмотрим изображенный пример:
5. Access modifier по умолчанию
В случае, если вы объявляете поле, метод, или конструктор (constructor), class, .. но не пишете точно access modifier, это означает что он является access modifier по умолчанию.
Рамки доступа access modifier по умолчанию это внутри package.
Рамки доступа access modifier по умолчанию это внутри package.
// A class with default access modifier
// (Not public).
class MyClass {
// A field with private access modifier.
private int myField;
// A field with default access modifier.
// (not specified public, protected, private).
String myField2;
// A method with default access modifier.
// (not specified public, protected, private).
void showMe() {
}
}
В том же package вы можете получить доступ к членам имеющим access modifier по умолчанию.
И вы не можете получить доступ снаружи package, даже в подклассе.
С интерфейсом, когда вы объявляете поле (Field) или метод (Method) вам всегда нужно объявлять public или ставить по умолчанию, но Java всегда будет понимать это как public.
public interface MyInterface {
// This is a field, you can not declare private or protected.
public static int MY_FIELD1 = 100;
// This is a field with default access modifier
// But Java considering this is a public.
static int MY_FIELD2 = 200;
// This is a method, with default access modifier
// But Java considering this is a public.
void showInfo();
}
6. protected access modifier
protected access modifier может получить доступ внутри package, или снаружи package но только через наследственность.
protected access modifier применяется только для поля, метода и конструктора. Не может применяться для класса (class, interface, enum, annotation).
7. public access modifier
public access modifier это самы сильный и может получить доступ везде. Он имеет самый широкий диапазон доступа по сравнению с другими modifier.
8. Метод переопределения
Вы можете переопределить метод родительского класса, метод которого имеет одинаковое название и параметр в подклассе. Но вы не можете ограничить рамки доступа этого метода.
На изображении выше.
- Class Cat расширенный из class Animal и переопределить метод move(), переопределть рамки доступа из protected в public, это действительно.
- Class Mouse расширенный из class Animal и переопределить метод move(), ереопределть рамки доступа из protected в по умолчанию, уменьшает рамки доступа корневого метода, это неразрешено.
Java Basic
- Настройте java compiler для обработки вашего Annotation (Annotation Processing Tool)
- Программирование на Java для группы с помощью Eclipse и SVN
- Руководство Java WeakReference
- Руководство Java PhantomReference
- Сжатие и декомпрессия в Java
- Настройка Eclipse для использования JDK вместо JRE
- Методы String.format() и printf() в Java
- Синтаксис и новые функции в Java 8
- Регулярные выражения Java
- Руководство Java Multithreading Programming
- Библиотеки Java JDBC Driver для различных типов баз данных
- Руководство Java JDBC
- Получить значения столбцов, автоматически возрастающих при вставлении (Insert) записи, используя JDBC
- Руководство Java Stream
- Руководство Java Functional Interface
- Введение в Raspberry Pi
- Руководство Java Predicate
- Абстрактный класс и Interface в Java
- Модификатор доступа (Access modifiers) в Java
- Руководство Java Enum
- Руководство Java Annotation
- Сравнение и Сортировка в Java
- Руководство Java String, StringBuffer и StringBuilder
- Обработка исключений Java - Java Exception Handling
- Руководство Java Generics
- Манипулирование файлами и каталогами в Java
- Руководство Java BiPredicate
- Руководство Java Consumer
- Руководство Java BiConsumer
- Что мне нужно для начала работы с Java?
- История Java и разница между Oracle JDK и OpenJDK
- Установить Java в Windows
- Установите Java в Ubuntu
- Установите OpenJDK в Ubuntu
- Установить Eclipse
- Установите Eclipse в Ubuntu
- Быстрое изучение Java для начинающих
- История бит и байтов в информатике
- Типы данных в java
- Битовые операции
- Команда if else в Java
- команды switch в Java
- Циклы в Java
- Массивы (Array) в Java
- JDK Javadoc в формате CHM
- Наследование и полиморфизм в Java
- Руководство Java Function
- Руководство Java BiFunction
- Пример Java encoding и decoding с использованием Apache Base64
- Руководство Java Reflection
- Java Удаленный вызов методов - Java RMI
- Руководство Программирование Java Socket
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Руководство Java Commons IO
- Руководство Java Commons Email
- Руководство Java Commons Logging
- Понимание Java System.identityHashCode, Object.hashCode и Object.equals
- Руководство Java SoftReference
- Руководство Java Supplier
- Аспектно-ориентированное программирование Java с помощью AspectJ (AOP)
Show More
- Руководства Java Servlet/JSP
- Руководства Java Collections Framework
- Java API для HTML, XML
- Руководства Java IO
- Руководства Java Date Time
- Руководства Spring Boot
- Руководства Maven
- Руководства Gradle
- Руководства Java Web Services
- Руководства Java SWT
- Руководства JavaFX
- Руководства Oracle Java ADF
- Руководства Struts2 Framework
- Руководства Spring Cloud