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 usiaprivate
dan menerapkan logika di dalamsetAge()
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 private
usia lapangan. Karena itu private
, tidak dapat diakses dari luar kelas.
Untuk mengakses usia, kami telah menggunakan public
metode: 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;