Инкапсуляция в Java - как освоить ООП с инкапсуляцией?



Эта статья об инкапсуляции в Java поможет вам понять основные концепции сокрытия деталей реализации вместе с различными простыми примерами.

Объектно-ориентированное программирование, или более известное как ООП, является одним из основных столпов Java, который использует его мощность и простоту использования. Чтобы стать профессиональным разработчиком Java, вы должны получить безупречный контроль над различными любить , Абстракция , Инкапсуляция и полиморфизм. В рамках этой статьи я дам вам полное представление об одной из самых важных концепций ООП, то есть инкапсуляции в Java, и о том, как это достигается.

Ниже приведены темы, которые я буду обсуждать в этой статье:





Вы также можете просмотреть эту запись где вы можете подробно разобраться в тематике с примерами.



Введение в инкапсуляцию

Инкапсуляция относится к объединению данных в один блок. Это механизм, связывающий код и данные, которыми он управляет. Другой способ думать об инкапсуляции - это защитный экран, который предотвращает доступ к данным для кода за пределами этого экрана. В этом случае переменные или данные скрыт от любого другого класса и может быть доступен только через любую функцию-член собственного класса, в котором они объявлены.

А теперь давайте возьмем пример с медицинской капсулой, где лекарство всегда безопасно внутри капсулы. Точно так же благодаря инкапсуляции методы и переменные класса хорошо скрыты и безопасны.



Инкапсуляция - инкапсуляция в Java-EdurekaИнкапсуляция в Java может быть достигнута:

как сделать массив объектов
  • Объявление переменных класса закрытыми.
  • Предоставление общедоступных методов установки и получения для изменения и просмотра значений переменных.

Теперь давайте посмотрим на код, чтобы лучше понять инкапсуляцию:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Гарри Поттер') System.out.println (s.getName ())}}

Как вы можете видеть в приведенном выше коде, я создал класс Student с частным имя . Затем я создал геттер и сеттер для получения и установки имени студента. С помощью этих методов любой класс, который хочет получить доступ к переменной имени, должен сделать это, используя эти методы получения и установки.

Теперь давайте рассмотрим еще один пример и подробно разберемся с инкапсуляцией. В этом примере у класса Car есть два поля - name и topSpeed. Здесь оба объявлены как частные, что означает, что к ним нельзя получить доступ непосредственно вне класса. У нас есть некоторые методы получения и установки, такие как getName, setName, setTopSpeed ​​и т. Д., И они объявлены как общедоступные. Эти методы доступны «посторонним» и могут использоваться для изменения и извлечения данных из объекта Car. У нас есть один метод установки максимальной скорости транспортного средства и два метода получения значения максимальной скорости в милях в час или в километрах в час. По сути, это то, что делает инкапсуляция - она ​​скрывает реализацию и дает нам желаемые значения. Теперь давайте посмотрим на код ниже.

package Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Здесь основная программа создает объект Car с заданным именем и использует метод setter для сохранения максимальной скорости для этого экземпляра. Делая это, мы можем легко получить скорость в MPH или KMH, не заботясь о том, как скорость преобразуется в классе Car.

package Edureka публичный класс Пример {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4,8-литровый V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'максимальная скорость в км / ч равна' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'максимальная скорость в км / ч равна' + car.getTopSpeedKMH ())

Sо, вот как можно добиться инкапсуляции в Java. Теперь давайте пойдем дальше и посмотрим, зачем нам нужна инкапсуляция.

как реализовать связанный список в c

Зачем нам нужна инкапсуляция в Java?

Инкапсуляция важна в Java, потому что:

  • Он контролирует способ доступа к данным
  • Изменяет код по реквизитам
  • Помогает нам добиться распутной пары
  • Достигает простоты нашего приложения
  • Это также позволяет вам изменять часть кода, не нарушая никаких других функций или кода, присутствующих в программе.

Теперь давайте рассмотрим небольшой пример, иллюстрирующий необходимость инкапсуляции.

class Student {int id String name} открытый класс Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

В приведенном выше примере он содержит две переменные экземпляра в качестве модификатора доступа. Таким образом, любой класс в одном пакете может назначать и изменять значения этих переменных, создавая объект этого класса. Таким образом, мы не можем контролировать значения, хранящиеся в классе Student как переменные. Чтобы решить эту проблему, мы инкапсулируем класс Student.

Итак, это были несколько указателей, указывающих на необходимость инкапсуляции. Теперь давайте посмотрим на некоторые преимущества инкапсуляции.

Преимущества инкапсуляции

    • Скрытие данных: Здесь пользователь не будет иметь представления о внутренней реализации класса. Даже пользователь не будет знать, как класс хранит значения в переменных. Он / она будет знать только о том, что мы передаем значения методу установки и переменные инициализируются этим значением.
    • Повышенная гибкость: Здесь мы можем сделать переменные класса доступными только для чтения или только для записи в зависимости от наших требований. Если вы хотите, чтобы переменные были доступны только для чтения, мы должны опустить методы установки, такие как setName (),setAge() и т. д. или если мы хотим сделать переменные доступными только для записи, тогда мы должны опустить методы получения, такие как getName (), getAge () и т. д. из вышеуказанной программы.
    • Возможность повторного использования: Это также улучшает возможность повторного использования и легко заменяется новыми требованиями.

Теперь, когда мы поняли основы инкапсуляции, давайте погрузимся в последнюю тему этой статьи и подробно разберемся с инкапсуляцией с помощью примера в реальном времени.

Пример инкапсуляции в реальном времени

Давайте рассмотрим телевизионный пример и поймем, как детали внутренней реализации скрыты от внешнего класса.По сути, в этом примере мы скрываем данные внутреннего кода, то есть схемы от внешнего мира, за крышкой. Сейчас в , этого можно добиться с помощью модификаторов доступа. Модификаторы доступа устанавливают доступ или уровень класса, переменные конструктора и т. Д. Как вы можете видеть в приведенном ниже коде, я использовал модификатор частного доступа, чтобы ограничить уровень доступа класса. Переменные, объявленные как частные, доступны только в классе Television.

public class Television {private double width private double height private double Screensize private int maxVolume print int volume private boolean power Public Television (double width, double height, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int reduceVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Телевидение t = новое телевидение (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () телевидение. // Выдает ошибку, поскольку переменная является частной и к ней нельзя получить доступ за пределами класса}}

В приведенном выше примере я объявил все переменные как частные, а методы, конструкторы и класс как общедоступные. Здесь конструкторы, методы доступны вне класса. Когда я создаюобъекткласса Television, он может получить доступ к методам и конструкторам, присутствующим в классе, тогда как переменные, объявленные с модификатором частного доступа, скрыты. Вот почему, когда вы пытаетесь получить доступ переменная ширины в приведенном выше примере он бросаетошибка. Вот так детали внутренней реализации скрываются от других классов. Так достигается инкапсуляция в Java.

На этом мы подошли к концу статьи «Инкапсуляция в Java». Надеюсь, вы нашли его информативным и помогли повысить ценность ваших знаний. Если вы хотите узнать больше о Java, вы можете обратиться к

как создавать динамические веб-страницы

Теперь, когда вы поняли, «что такое инкапсуляция в Java», ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Курс обучения и сертификации по Java J2EE и SOA от Edureka предназначен для студентов и профессионалов, которые хотят стать Java-разработчиками. Курс разработан, чтобы дать вам хорошее начало в программировании на Java и обучить вас как основным, так и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога «Инкапсуляция в Java», и мы свяжемся с вами в ближайшее время.