Untuk meringkas konten sebelumnya, objek mengacu pada hal tertentu, dan kelas mengacu pada jenis objek. Objek dapat memiliki status dan tindakan, yaitu anggota data dan metode.
Hingga saat ini, anggota dan metode data terbuka untuk pengguna internal dan eksternal. Di dalam objek, kita menggunakan ini untuk memanggil anggota data dan metode objek. Di luar objek, misalnya ketika kita memanggil objek di kelas lain, kita dapat menggunakan anggota objek.data dan objek.metode() untuk memanggil anggota data dan metode objek.
Kita akan merangkum anggota objek (anggota termasuk anggota data dan metode), sehingga hanya mengizinkan beberapa anggota untuk dipanggil dari luar. Dengan menggunakan enkapsulasi, kita dapat meningkatkan kemudahan penggunaan dan keamanan objek.
Enkapsulasi dan antarmuka
Enkapsulasi adalah istilah umum untuk komputer, yang berarti mempertahankan antarmuka eksternal terbatas dan menyembunyikan detail implementasi tertentu. Misalnya, dalam arsitektur Linux, Anda dapat melihat bahwa sistem operasi Linux merangkum detail spesifik dari perangkat keras yang mendasarinya, hanya mempertahankan antarmuka panggilan sistem. Pengguna berada di luar paket dan hanya dapat melakukan operasi yang diperlukan melalui antarmuka.
Enkapsulasi sangat umum dalam kehidupan. Misalnya, ini senter yang dapat diisi ulang:
Bahkan tanpa membaca manualnya, pengguna dapat menebak pengoperasian senter ini: peralihan dan pengisian daya. Senter ini menggunakan cangkang plastik untuk menyembunyikan detail internal yang tidak perlu disentuh pengguna, hanya menyisakan dua antarmuka, sakelar dan steker listrik. Dengan menggunakan dua antarmuka ini, pengguna cukup menggunakan fungsi-fungsi yang dirancang untuk dicapai oleh produk. Jika semua detail diperlihatkan kepada pengguna pada saat yang sama, pengguna akan merasa kewalahan dengan produk tersebut (seperti remote control tanpa cangkang di bawah). Oleh karena itu, enkapsulasi meningkatkan kemudahan penggunaan produk.
Jika produk tidak dikemas, banyak detail senter atau remote control yang akan terlihat oleh pengguna: baterai, sirkuit, karet tersegel, dll. Meskipun hal ini memungkinkan pengguna untuk mengoperasikan produk dengan lebih leluasa, seperti langsung mengosongkan baterai, mematikan lampu LED, dll. Namun, pengguna sering kali menanggung risiko kerusakan produk yang lebih besar. Oleh karena itu, enkapsulasi meningkatkan keamanan produk.
Produk perangkat lunak Java sama dengan produk sehari-hari. Sebuah objek dapat memiliki banyak anggota (anggota data dan metode) di dalamnya. Beberapa anggota data dan metode hanya digunakan secara internal. Saat ini, kami berharap memiliki mekanisme untuk "mengemas" objek untuk merangkum objek tersebut. Dengan cara ini, pengguna dapat lebih mudah mempelajari dan menggunakan antarmuka eksternal tanpa harus menghubungi anggota internal.
Enkapsulasi anggota objek
Java menggunakan tiga kata kunci untuk mengontrol visibilitas eksternal anggota suatu objek: publik, pribadi, dilindungi.
1.publik: Anggota terlihat secara eksternal, artinya anggota adalah bagian dari antarmuka
2.private : Member ini tidak terlihat dari luar dan hanya dapat digunakan secara internal dan tidak dapat diakses dari luar.
(dilindungi melibatkan konsep warisan, yang akan dibahas nanti)
Pertama-tama mari kita rangkum kelas Manusia yang telah ditentukan sebelumnya:
Copy kode kodenya sebagai berikut:
Tes kelas publik
{
public static void main(String[] args)
{
Manusia aPerson = Manusia baru(160);
Sistem.keluar.println(aPerson.getHeight());
aPerson.growHeight(170);
Sistem.keluar.println(aPerson.getHeight());
aPerson.repeatBreath(100);
}
}
kelasManusia
{
/**
* konstruktor
*/
Manusia publik (int h)
{
ini.tinggi = h;
System.out.println("Saya lahir");
}
/**
*aksesor
*/
publik int getHeight()
{
kembalikan ini.tinggi;
}
/**
* mutasi
*/
kekosongan publik tumbuhTinggi(int h)
{
ini.tinggi = ini.tinggi + h;
}
/**
* dikemas, untuk penggunaan internal
*/
nafas hampa pribadi()
{
System.out.println("hu...hu...");
}
/**
*panggil nafas()
*/
public void repeatBreath(int perwakilan)
{
ke dalam aku;
untuk(saya = 0; saya < perwakilan; saya++) {
ini.nafas();
}
}
private int height; // dienkapsulasi, untuk penggunaan internal
}
Metode internal tidak terpengaruh oleh enkapsulasi. Metode internal manusia dapat memanggil anggota mana pun, bahkan tinggi dan nafas() disetel ke pribadi
Metode eksternal hanya dapat memanggil anggota publik. Saat kita berada di luar Manusia, seperti di Tes, kita hanya dapat memanggil anggota yang ditetapkan sebagai publik di Manusia, namun tidak dapat memanggil anggota yang ditentukan sebagai pribadi.
Melalui enkapsulasi, kelas Manusia hanya mempertahankan metode berikut sebagai antarmuka:
1.getTinggi()
2.tumbuhTinggi()
3.repNafas()
Kita dapat merepresentasikan kelas Manusia dan antarmukanya sebagai berikut:
"Remote control dengan case"
Jika kita memaksa ketinggian panggilan dari utama:
Copy kode kodenya sebagai berikut:
System.out.println(aPerson.height);
Akan ada pesan kesalahan berikut:
Copy kode kodenya sebagai berikut:
Test.java:6: tinggi memiliki akses pribadi di Manusia
System.out.println(aPerson.height);
^
1 kesalahan
Bip, kamu tersengat listrik! Seorang anggota yang dinyatakan sebagai pribadi tidak dapat dipanggil secara eksternal.
Dalam spesifikasi Java yang biasa, anggota data yang menyatakan status (seperti tinggi) disetel ke pribadi. Modifikasi pada anggota data harus dilakukan melalui metode yang disediakan oleh antarmuka (seperti getHeight() dan GrowHeight()). Spesifikasi ini berperan dalam melindungi data. Pengguna tidak dapat mengubah data secara langsung dan harus menggunakan metode yang sesuai untuk membaca dan menulis data. Perancang kelas dapat menambahkan spesifikasi penggunaan data ke metode antarmuka.
enkapsulasi kelas
Dalam file .java, hanya ada satu kelas dengan kata kunci public, seperti kelas Test di atas. Jadi, dari kelas lain mana pun, kita bisa memanggil kelas ini secara langsung. Kelas manusia tidak memiliki kata kunci. Sebelumnya, anggota objek kami tidak memiliki kata kunci. Kurangnya kata kunci ini juga mewakili semacam visibilitas, yang akan saya bahas secara mendalam saat menjelaskan paket.
Berlatih merangkum kelas Torch untuk mewakili senter. Antarmuka telah beralih dan mengisi daya. Anggota internal mempunyai kekuasaan.
Meringkaskan
enkapsulasi, antarmuka
swasta, publik