Вопрос 1: Модификаторы доступа? Q2: УПС: Инкапсуляция? Q3: Как добиться инкапсуляции? Q4: Преимущества?
1. Модификатор доступа:-
1.1 используется для установки уровня доступа для классов, атрибутов, методов и конструкторов. 1.2 java предоставляет модификаторы доступа, такие как public, private, default и protected.
Модификаторы доступа на уровне класса:-
public: класс доступен другим классам по умолчанию: доступ к классу могут получить классы из того же пакета. по умолчанию для модификатора доступа установлено значение default
Модификаторы доступа на уровне метода, атрибутов, конструктора:-
public: код доступен для всех классов private: код доступен только внутри класса default: код доступен только в том же пакете. по умолчанию модификатору доступа присвоено значение default protected: код доступен в том же пакете и вне пакета через подкласс
2. Инкапсуляция:-
2.1 это одна из самых мощных и фундаментальных концепций объектно-ориентированного программирования 2.2, также называемая сокрытие данных , поскольку она скрывает конфиденциальные данные от пользователя, чтобы защитить их от внешнего вмешательства и неправильного использования
объединение данных в единое целое с целью предотвращения доступа к ним из внешнего мира
2.3 например, автомобиль состоит из множества деталей, таких как колеса, двигатель и т.д., Которые вместе образуют единый объект.
2.4 поскольку существует запрет на прямой доступ к данным. Функции – это единственные способы доступа к данным. Это в основном создает щит, из-за которого код или данные не могут быть доступны за пределами экрана
чтобы прочитать элементы данных, вы вызываете функцию-член в объекте. Он считает элементы данных из функции и вернет вам значение. Прямой доступ к данным невозможен, чтобы обеспечить их защиту от случайного изменения.
2.5 Например, в крупной организации есть много отделов, таких как отдел продаж, расчет заработной платы, бухгалтерия и т.д. И у каждого отдела был свой собственный персонал для ведения своих данных.
- Предположим, сотрудник хочет знать данные об импорте и экспорте материалов, но ему не будет разрешен доступ к этим данным. Скорее всего, он должен будет издать приказ от уполномоченного лица, запрашивающего необходимую информацию. Тогда также конкретный сотрудник не будет напрямую получать доступ к данным, скорее сотрудники уполномоченного отдела соберут данные запроса и передадут их желаемому сотруднику. > таким образом, мы можем сказать, что здесь отдел представляет собой единое целое, которое объединяет данные и сотрудников.
3. Достичь инкапсуляции:-
шаг 1: объявите переменные уровня класса private
таким образом, к ним нельзя получить доступ извне класса
шаг 2: предоставьте сеттер и методы получения , которые объявлены как общедоступные
используется для просмотра или изменения значения переменной
Ссылка на Github на приведенный ниже код Простой пример инкапсуляции:-
public class Encapsulation { //Declaring variables as private private String EmployeeName; private String EmployeeJob; private int EmployeeAge; //'public' Setter and Getter Methods public void setName(String EmployeeName) { this.EmployeeName = EmployeeName; } public String getName() { return EmployeeName; } public void setJob(String EmployeeJob) { this.EmployeeJob = EmployeeJob; } public String getJob() { return EmployeeJob; } public void setAge(int EmployeeAge) { this.EmployeeAge = EmployeeAge; } public int getAge() { return EmployeeAge; } public static void main (String[] args) { //creating object Encapsulation e = new Encapsulation(); // setting values through setter methods e.setName("SUPRIYA KOLHE"); e.setAge(22); e.setJob("SOFTWARE DEVELOPER"); // Displaying values through Getter methods System.out.println("Name of the employee: " + e.getName()); System.out.println("Age of the employee: " + e.getAge()); System.out.println("Job of the employee: " + e.getJob()); }//PSVM ends }//Encapsulation class ends /* Name of the employee: SUPRIYA KOLHE Age of the employee: 22 Job of the employee: SOFTWARE DEVELOPER */
3.1 как вы можете видеть в приведенном выше примере, здесь мы устанавливаем значения с помощью методов Setter и получаем к ним доступ с помощью метода Getter
где методы Setter устанавливают значение переменной, а методы Getter возвращают значения
4. Преимущества:-
Скрытие данных:- программист может скрывать внутренние классы и предоставлять авторизацию для доступа к ним только нужным пользователям.
ограничивает доступность данных
Простота тестирования:- благодаря упорядоченной структуре легко выполнять модульное тестирование. Гибкость и ремонтопригодность: – программист может сделать код доступным только для чтения и только для записи в соответствии с потребностями.
Методы получения используются для чтения/извлечения данных. Таким образом, использование только их сделает код доступным только для чтения. Методы Setter используются для записи в переменные. Таким образом, использование только их сделает код доступным только для записи.
Пример, доступный только для чтения:
public class Employee { private String Dept="IT"; public String getDept() { return Dept; } }
Пример, доступный только для записи:
public class Employee { private String Salary="80000"; public String setSalary() { return Salary; } }
Методы получения и установки: – возможность доступа к частным переменным вне класса Возможность повторного использования кода: – возможность эффективно использовать существующий код снова и снова. Контроль и безопасность: – класс имеет контроль над переменными и полями, т.е. над тем, что в них хранится.
Пожалуйста, прокомментируйте, если у вас есть какие-либо отзывы или предложения
Оригинал: “https://dev.to/supriya2371997/java-oop-encapsulation-3pl8”