cari
RumahJavajavaTutorialMemahami Enkapsulasi dalam Pengaturcaraan Berorientasikan Objek

Understanding Encapsulation in Object-Oriented Programming

Enkapsulasi dalam Pengaturcaraan Berorientasikan Objek

Encapsulation ialah konsep pengaturcaraan berorientasikan objek asas yang melibatkan data gabungan (medan) dan kaedah (fungsi) yang beroperasi pada data dalam satu unit, biasanya kelas. Ia mengehadkan akses terus kepada beberapa komponen objek, menjadikannya lebih mudah untuk mengekalkan dan melindungi kod.

Kebaikan Enkapsulasi

  1. Menyembunyikan Data: Keadaan dalaman disembunyikan daripada dunia luar dan akses dikawal melalui kaedah (pengambil dan penetap).
  2. Kebolehselenggaraan Kod yang Dipertingkat: Perubahan pada medan atau kaedah boleh dibuat tanpa menjejaskan kod luaran yang menggunakan kelas.
  3. Keselamatan Dipertingkat: Dengan mengehadkan akses terus ke medan, kami boleh mengesahkan dan melindungi data daripada keadaan tidak sah.

Contoh Kod: Enkapsulasi dalam Tindakan

// Encapsulation refers to restricting access of a class from the outside world
public class Person {
    private String name;
    private String profession;
    private double height;
    private int ID;
    private int age;

    // Constructor
    public Person(String name, String profession, double height, int iD, int age) {
        this.name = name;
        this.profession = profession;
        this.height = height;
        ID = iD;
        this.age = age;
    }

    // Getters and setters for accessing private fields
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getProfession() {
        return profession;
    }
    public void setProfession(String profession) {
        this.profession = profession;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    // Main method to demonstrate encapsulation
    public static void main(String[] args) {
        Person myPerson = new Person("Robert", "doctor", 130.4, 39, 23);

        // Accessing private fields through getter methods
        System.out.println(myPerson.getName());
        System.out.println(myPerson.getProfession());
        System.out.println(myPerson.getID());
        System.out.println(myPerson.getAge());
    }
}

Penjelasan Kod

Medan Persendirian

Nama medan, profesion, ketinggian, ID dan umur diisytiharkan sebagai peribadi. Ini menjadikan mereka tidak boleh diakses terus dari luar kelas.

Getters dan Setter

Kaedah awam seperti getName(), setName(), getProfession(), dan lain-lain bertindak sebagai titik akses terkawal untuk medan peribadi. Kaedah ini membenarkan kod luaran untuk mendapatkan dan mengubah suai data peribadi dengan selamat.

Pembina

Pembina memulakan medan apabila objek kelas Orang dicipta. Ini memastikan bahawa objek bermula dalam keadaan yang sah.

Kaedah Utama

Kaedah utama menunjukkan cara enkapsulasi digunakan. Medan persendirian diakses secara tidak langsung melalui kaedah getter.


Faedah dalam Contoh

  1. Perlindungan Data:

    • Medan peribadi tidak boleh diakses atau diubah suai secara langsung, menghalang perubahan yang tidak disengajakan atau berniat jahat.
  2. Akses Terkawal:

    • Dengan menggunakan setter, anda boleh memasukkan logik pengesahan untuk memastikan hanya data yang sah ditetapkan. Contohnya:
     public void setAge(int age) {
         if (age > 0) {
             this.age = age;
         } else {
             System.out.println("Age must be positive.");
         }
     }
    
  3. Kefleksibelan Kod:

    • Jika pelaksanaan medan berubah (cth., menambahkan medan terbitan), kod luaran yang menggunakan kelas kekal tidak terjejas.

Contoh ini menggambarkan cara enkapsulasi memastikan kelas Person mengekalkan integriti dan menyembunyikan butiran pelaksanaannya sambil menyediakan antara muka terkawal untuk interaksi.

Atas ialah kandungan terperinci Memahami Enkapsulasi dalam Pengaturcaraan Berorientasikan Objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimana untuk melaksanakan penyulitan, penyahsulitan dan interkoneksi algoritma SM4 dan SM2 rahsia negara?Bagaimana untuk melaksanakan penyulitan, penyahsulitan dan interkoneksi algoritma SM4 dan SM2 rahsia negara?Apr 19, 2025 pm 06:27 PM

GO Language melaksanakan penyulitan dan penyahsulitan SM4 dan SM2 dalam bahasa Go. Artikel ini akan memperkenalkan secara terperinci bagaimana menggunakan bahasa Go untuk melaksanakan proses penyulitan dan penyahsulitan penyulitan dan penyahsulitan algoritma SM4 dan SM2 dalam bahasa Go untuk memenuhi keperluan Java ...

Adakah perlu melakukan lapisan dalam projek Python?Adakah perlu melakukan lapisan dalam projek Python?Apr 19, 2025 pm 06:24 PM

Adakah perlu untuk mengikat dalam projek Python? Baru -baru ini, ketika saya belajar Python, saya perhatikan bahawa banyak projek sumber terbuka Django telah menulis banyak dari mereka dalam fungsi pandangan ...

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct?Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct?Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port Projek Boot Spring melalui teknologi Javaagent dan RMI?Bagaimanakah Idea IntelliJ mengenal pasti nombor port Projek Boot Spring melalui teknologi Javaagent dan RMI?Apr 19, 2025 pm 06:18 PM

Bagaimanakah IntelliJidea mengenali nombor pelabuhan Springboot Project? Mula musim bunga menggunakan versi IntelliJideaultimate ...

Pengaturcaraan yang cekap: Bagaimana anda dapat mencari alat dan sumber kod yang boleh dipercayai?Pengaturcaraan yang cekap: Bagaimana anda dapat mencari alat dan sumber kod yang boleh dipercayai?Apr 19, 2025 pm 06:15 PM

Pengaturcaraan yang cekap: Mencari alat dan sumber kod yang boleh dipercayai Banyak pengaturcara tidak sabar -sabar untuk mencari laman web alat kod yang mudah untuk meningkatkan kecekapan dan mengelakkan maklumat besar ...

Bolehkah JWT melaksanakan perubahan kebenaran dinamik? Apakah perbezaan dari mekanisme sesi?Bolehkah JWT melaksanakan perubahan kebenaran dinamik? Apakah perbezaan dari mekanisme sesi?Apr 19, 2025 pm 06:12 PM

Kekeliruan dan jawapan mengenai JWT dan sesi Banyak pemula sering keliru tentang sifat dan senario mereka yang terpakai ketika belajar JWT dan sesi. Artikel ini akan berputar di sekitar J ...

Bagaimana cara mengkonfigurasi Firewall Windows Server 2019 untuk menyokong komunikasi WebSocket?Bagaimana cara mengkonfigurasi Firewall Windows Server 2019 untuk menyokong komunikasi WebSocket?Apr 19, 2025 pm 06:09 PM

Penjelasan terperinci mengenai masalah komunikasi antara Windows Server 2019 Firewall dan WebSocket. Program balang yang dibangunkan menggunakan SpringBoot yang digunakan di Windows Server 2019 ...

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa