Enkapsulasi Java

Dalam tutorial ini, Anda akan belajar tentang enkapsulasi dan penyembunyian data di Java dengan bantuan contoh.

Enkapsulasi Java

Enkapsulasi adalah salah satu fitur utama dari pemrograman berorientasi objek. Enkapsulasi mengacu pada bundling bidang dan metode di dalam satu kelas.

Ini mencegah kelas luar mengakses dan mengubah bidang dan metode kelas. Ini juga membantu mencapai penyembunyian data .

Contoh 1: Enkapsulasi Java

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Keluaran

 Luas: 30

Dalam contoh di atas, kami telah membuat kelas bernama Area. Tujuan utama kelas ini adalah menghitung luas.

Untuk menghitung suatu daerah, kita perlu dua variabel: panjang dan lebarnya dan metode: getArea(). Karenanya, kami menggabungkan bidang dan metode ini di dalam satu kelas.

Di sini, bidang dan metode dapat diakses dari kelas lain juga. Karenanya, ini bukan penyembunyian data .

Ini hanya enkapsulasi . Kami hanya menyimpan kode yang sama.

Catatan : Orang sering menganggap enkapsulasi sebagai penyembunyian data, tetapi itu tidak sepenuhnya benar.

Enkapsulasi mengacu pada penggabungan bidang dan metode terkait bersama-sama. Ini dapat digunakan untuk mencapai penyembunyian data. Enkapsulasi itu sendiri tidak menyembunyikan data.

Mengapa Enkapsulasi?

  • Di Java, enkapsulasi membantu kita menyatukan bidang dan metode terkait, yang membuat kode kita lebih bersih dan mudah dibaca.
  • Ini membantu untuk mengontrol nilai bidang data kami. Sebagai contoh,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Di sini, kami membuat variabel usia privatedan menerapkan logika di dalam setAge()metode. Sekarang, usia tidak bisa negatif.
  • Metode pengambil dan penyetel menyediakan akses hanya baca atau tulis saja ke bidang kelas kita. Sebagai contoh,
     getName() // provides read-only access setName() // provides write-only access
  • Ini membantu untuk memisahkan komponen sistem. Misalnya, kita dapat merangkum kode menjadi beberapa bundel.
    Komponen yang dipisahkan (bundel) ini dapat dikembangkan, diuji, dan di-debug secara independen dan bersamaan. Dan, setiap perubahan pada komponen tertentu tidak berpengaruh pada komponen lainnya.
  • Kami juga dapat mencapai penyembunyian data menggunakan enkapsulasi. Pada contoh di atas, jika kita mengubah variabel panjang dan lebar menjadi pribadi, maka akses ke bidang ini dibatasi.
    Dan, mereka disembunyikan dari kelas luar. Ini disebut penyembunyian data .

Menyembunyikan Data

Menyembunyikan data adalah cara membatasi akses anggota data kami dengan menyembunyikan detail implementasi. Enkapsulasi juga menyediakan cara untuk menyembunyikan data.

Kita dapat menggunakan pengubah akses untuk menyembunyikan data. Sebagai contoh,

Contoh 2: Menyembunyikan data menggunakan penentu pribadi

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Keluaran

 Umur saya 24 tahun

Dalam contoh di atas, kami memiliki privateusia lapangan. Karena itu private, tidak dapat diakses dari luar kelas.

Untuk mengakses usia, kami telah menggunakan publicmetode: getAge()dan setAge(). Metode ini disebut metode pengambil dan penyetel.

Menjadikan usia pribadi memungkinkan kami membatasi akses tidak sah dari luar kelas. Ini menyembunyikan data .

Jika kami mencoba mengakses bidang usia dari kelas Utama, kami akan mendapatkan kesalahan.

 // error: age has private access in Person p1.age = 24;

Artikel yang menarik...