«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Что такое инкапсуляция и как ее использовать.

Что такое инкапсуляция и как ее использовать.

Опубликовано 8 ноября 2024 г.
Просматривать:234

What is encapsulation and how to use it.

Что такое инкапсуляция?
Инкапсуляция в Java заключается в том, чтобы скрыть детали того, как что-то работает, но при этом позволить другим использовать их. Вы группируете свои данные (например, переменные) и методы (например, функции) в одну единицу, называемую классом. Вместо того, чтобы предоставлять всем прямой доступ к вашим данным, вы предоставляете методы (геттеры и сеттеры) для управления доступом к ним или их изменением. Таким образом, вы защитите свои данные и сохраните свой код в чистоте и порядке, не позволяя никому вмешиваться во внутреннюю работу, если вы этого не хотите.

Как использовать
Чтобы использовать инкапсуляцию в Java, вы создаете класс с закрытыми полями и предоставляете общедоступные методы (например, методы получения и установки) для доступа и изменения этих полей. Это гарантирует, что данные могут быть изменены только контролируемым образом. Например, если вы хотите создать класс Person, имя и возраст которого являются частными, вы должны использовать геттеры для получения значений и сеттеры для их обновления. Вот как это можно сделать:

public class Person {
    // Private fields
    private String name;
    private int age;

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter for name
    public String getName() {
        return name;
    }

    // Setter for name
    public void setName(String name) {
        this.name = name;
    }

    // Getter for age
    public int getAge() {
        return age;
    }

    // Setter for age
    public void setAge(int age) {
        if(age > 0) { // Simple validation
            this.age = age;
        } else {
            System.out.println("Age must be positive.");
        }
    }
}

// Using the Person class
public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Accessing fields using getters
        System.out.println(person.getName()); // Output: John
        System.out.println(person.getAge());  // Output: 25

        // Modifying fields using setters
        person.setName("Jane");
        person.setAge(30);

        System.out.println(person.getName()); // Output: Jane
        System.out.println(person.getAge());  // Output: 30
    }
}

Давайте разберемся
Давайте разберем код и объясним каждый раздел шаг за шагом:

1. Определение класса с частными полями
public class Person {
    // Private fields
    private String name;
    private int age;
}

Объяснение:

Это класс Person, в котором мы определяем два частных поля: имя (строка) и возраст (целое число). Делая эти поля закрытыми, мы гарантируем, что ни один другой класс не сможет напрямую получить к ним доступ или изменить их. Это основная идея инкапсуляции — сокрытие внутреннего состояния объекта.

2. Конструктор
    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

Объяснение:

Конструктор инициализирует объект Person при его создании. Он принимает два параметра, имя и возраст, и присваивает эти значения приватным полям. Это гарантирует, что при создании нового объекта Person он начинается с действительных данных.

3. Геттер и сеттер для
    // Getter for name
    public String getName() {
        return name;
    }

    // Setter for name
    public void setName(String name) {
        this.name = name;
    }

Объяснение:

Конструктор инициализирует объект Person при его создании. Он принимает два параметра, имя и возраст, и присваивает эти значения приватным полям. Это гарантирует, что при создании нового объекта Person он начинается с действительных данных.

4. Получатель и сеттер по возрасту (с проверкой)
    // Getter for age
    public int getAge() {
        return age;
    }

    // Setter for age
    public void setAge(int age) {
        if (age > 0) { // Simple validation
            this.age = age;
        } else {
            System.out.println("Age must be positive.");
        }
    }

Объяснение:

Получатель getAge() работает так же, как и метод для имени, обеспечивая доступ к полю возраста.
Метод установки setAge() не только позволяет изменять поле возраста, но также добавляет проверку достоверности. Условие if гарантирует, что возраст будет установлен только в том случае, если он является положительным числом. Если указан недопустимый возраст (например, отрицательное число), установщик предотвращает обновление и вместо этого печатает сообщение. Это пример того, как инкапсуляция позволяет контролировать, какие данные могут быть установлены.

5. Использование класса Person
// Using the Person class
public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Accessing fields using getters
        System.out.println(person.getName()); // Output: John
        System.out.println(person.getAge());  // Output: 25

        // Modifying fields using setters
        person.setName("Jane");
        person.setAge(30);

        System.out.println(person.getName()); // Output: Jane
        System.out.println(person.getAge());  // Output: 30
    }
}

Объяснение:

В этом разделе мы создаем объект Person (человек) с помощью конструктора. Конструктор устанавливает начальное имя «Джон» и возраст — 25.

Затем мы используем геттеры (getName() и getAge()) для печати значений имени и возраста. После этого мы используем установщики (setName() и setAge()) для обновления значений. Наконец, обновленные значения снова печатаются с использованием геттеров.

Ключевые моменты инкапсуляции в действии:

  • Защита данных:

    К приватным полям нельзя получить прямой доступ или изменить их вне класса.

  • Контролируемый доступ:

    Геттеры и сеттеры обеспечивают контролируемый способ доступа и изменения частных полей.

  • Проверка:

    Установщик возраста демонстрирует, как можно обеспечить соблюдение правил (например, возраст должен быть положительным) для защиты данных от недопустимого ввода.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ife_oluwa/what-is-encapsulation-and-how-to-use-it-207d?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3