Какво е капсулиране в Java?
Капсулирането в Java е механизъм за обхващане на променливи (данни) и методи (код) заедно като една единица. Това е процесът на скриване на подробности за информация и защита на данните и поведението на обекта. Това е една от четирите важни концепции за ООП. Класът на капсулиране е лесен за тестване, така че е по-добър и за единично тестване.
В този урок ще научите -
- Какво е капсулиране в Java?
- Научете капсулиране с пример
- Скриване на данни в Java
- Методи Getter и Setter в Java
- Абстракция срещу капсулиране
- Предимства на капсулирането в Java
Щракнете тук, ако видеоклипът не е достъпен
Научете капсулиране с пример
За да разберете подробно какво е капсулиране, помислете за следния клас на банкова сметка с методи за депозиране и показване на салдото
class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}
Да предположим, че хакер е успял да получи достъп до кода на вашата банкова сметка. Сега той се опитва да депозира сума -100 във вашата сметка по два начина. Нека видим първия му метод или подход.
Подход 1: Той се опитва да депозира невалидна сума (да речем -100) във вашата банкова сметка, като манипулира кода.
Въпросът е - възможно ли е това? Нека разследва.
Обикновено променливата в клас се задава като "private", както е показано по-долу. Той може да бъде достъпен само с методите, дефинирани в класа. Никой друг клас или обект няма достъп до тях.
Ако даден член е частен, това означава, че той може да бъде достъпен само в рамките на същия клас. Никой външен клас не може да осъществи достъп до частен данни или променлива от друг клас.
Така че в нашия случай хакерът не може да депозира сума -100 във вашата сметка.
Подход 2 : Първият подход на Хакер не успя да депозира сумата. След това той се опитва да депозира сума -100 чрез метода "депозит".
Но изпълнението на метода има проверка за отрицателни стойности. Така че вторият подход също се проваля.
По този начин никога не излагате данните си на външна страна. Което прави приложението ви сигурно.
Целият код може да бъде представен като капсула и можете да комуникирате само чрез съобщенията. Оттук и наименованието капсулиране.
Скриване на данни в Java
Скриването на данни в Java крие променливите на клас от други класове. Достъпът до него може да стане само чрез метода на текущия им клас. Той скрива подробностите за изпълнението от потребителите. Но повече от скриване на данни, той е предназначен за по-добро управление или групиране на свързани данни.
За да постигнете по-малка степен на капсулиране в Java, можете да използвате модификатори като "защитен" или "публичен". С капсулирането разработчиците могат лесно да променят една част от кода, без да засягат друга.
Getter и Setter в Java
Getter и Setter в Java са два конвенционални метода, използвани за извличане и актуализиране на стойности на променлива. Те се използват главно за създаване, модифициране, изтриване и преглед на стойностите на променливите. Методът за задаване се използва за актуализиране на стойности, а методът за получаване се използва за четене или извличане на стойностите. Те са известни още като аксесоар и мутатор.
Следният код е пример за методите getter и setter:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}
В горния пример методът getBalance () е методът getter, който чете стойност на променлива account_balance, а методът setNumber () е метод на setter, който задава или актуализира стойност за променлива account_number.
Абстракция срещу капсулиране
Често капсулирането се разбира погрешно с абстракция. Нека учим-
- Капсулирането е по-скоро за "Как" да се постигне функционалност
- Абстракцията е по-скоро за „Какво“ може да направи един клас.
Един прост пример за разбиране на тази разлика е мобилният телефон. Когато сложната логика в платката е капсулирана в сензорен екран и е предвиден интерфейс, който да я абстрахира.
Предимства на капсулирането в Java
- Капсулирането обвързва данните със свързаните с тях функционалности. Тук функционалностите означават "методи", а данните означават "променливи"
- Така че ние държим променливите и методите на едно място. Това място е „клас“. Класът е основата за капсулиране.
- С Java Encapsulation можете да скриете (ограничите достъпа) до важни членове на данни във вашия код, което подобрява сигурността
- Както обсъждахме по-рано, ако даден член е обявен за "частен", тогава той може да бъде достъпен само в рамките на същия клас. Никой външен клас няма достъп до член на данни (променлива) от друг клас.
- Ако обаче имате нужда от достъп до тези променливи, трябва да използвате публичните методи "getter" и "setter" .