Kami telah mencoba mendefinisikan kelas. Mendefinisikan kelas berarti membuat tipe baru. Dengan kelas yang ada, kita kemudian membuat objek dengan tipe yang sesuai. Selain itu, setiap jenis juga harus memiliki antarmuka yang jelas untuk digunakan pengguna.
Kita bisa menggunakan objek lain dalam definisi kelas baru. Ini adalah komposisi. Kombinasi adalah salah satu cara dasar untuk mencapai kegunaan kembali program di Java.
Kombinasi dengan "has-a"
Satu objek adalah anggota data dari objek lain. Sebagai contoh, mari kita lihat contoh senter isi ulang yang disebutkan sebelumnya:
Baterai, lampu LED, tombol... dalam senter yang dapat diisi ulang semuanya bisa menjadi sebuah benda. Kita dapat mendefinisikan kelas Baterai untuk mendefinisikan dan menghasilkan objek baterai. Dalam definisi kelas senter isi ulang, objek baterai dapat digunakan sebagai anggota datanya untuk mewakili status bagian baterai.
Kami mendefinisikan kelas Baterai di bawah ini dan menggunakan daya untuk mewakili kekuatannya. Baterai dapat diisi (chargeBattery) dan digunakan (useBattery). Kami menggunakan objek tipe Baterai sebagai anggota data dalam definisi kelas Torch berikutnya:
Copy kode kodenya sebagai berikut:
kelasBaterai
{
Baterai kosong publik (p ganda)
{
if (kekuatan ini < 1.) {
ini.kekuatan = ini.kekuatan + p;
}
}
penggunaan boolean publikBattery (p ganda)
{
if (kekuatan ini >= p) {
ini.kekuatan = ini.kekuatan - p;
kembali benar;
}
kalau tidak {
this.power = 0,0;
kembali salah;
}
}
pangkat ganda hasil privat = 0,0;
}
kelasTorch
{
/**
* Daya 10% per jam penggunaan
* Peringatan saat kehabisan daya
*/
pengaktifan kekosongan publik (int jam)
{
boolean dapat digunakan;
dapat digunakan = this.theBattery.useBattery( jam*0.1 );
if (dapat digunakan != benar) {
System.out.println("Tidak dapat digunakan lagi, harus diisi!");
}
}
/**
* Pengisian daya 20% per jam
*/
biaya kekosongan publik (int jam)
{
this.theBattery.chargeBattery( jam*0.2 );
}
/**
* komposisi
*/
Baterai pribadi theBattery = Baterai baru();
}
Yang baru di atas mengalokasikan memori untuk objek Baterai dan sangat diperlukan.
Kami mendefinisikan kelas Baterai. Kelas Torch menggunakan objek tipe Baterai (theBattery) sebagai anggota data. Dalam metode Torch, kami mengimplementasikan fungsionalitas (fungsionalitas) yang disediakan oleh kelas Baterai dengan memanipulasi antarmuka objek Baterai.
Kami mengatakan bahwa objek Torch memiliki (memiliki) objek Baterai. Hubungan di atas dapat dinyatakan sebagai:
has-a : Senternya ada baterainya (perhatikan sambungan berbentuk berlian di atas)
Melalui kombinasi, kita dapat menggunakan kembali kode yang berhubungan dengan Baterai. Jika kita mempunyai kelas lain yang menggunakan Baterai, seperti ponsel dan kalkulator, kita dapat menggabungkan objek Baterai ke dalamnya. Hal ini menghilangkan kebutuhan untuk menulis fungsi terkait yang terpisah untuk setiap kelas.
Kita dapat menambahkan kelas Test untuk melihat efek sebenarnya:
Copy kode kodenya sebagai berikut:
Tes kelas publik
{
public static void main(String[] args)
{
Obor aTorch = Obor baru();
System.out.println("Biaya: 2 jam");
aTorch.biaya(2);
System.out.println("Pengaktifan Pertama: 3 jam");
aTorch.turnOn(3);
System.out.println("Pengaktifan Kedua: 3 jam");
aTorch.turnOn(3);
}
}
Hasil menjalankan program di atas:
Biaya: 2 jam
Menyalakan Pertama: 3 jam
Pengaktifan Kedua: 3 jam
Tidak dapat digunakan lagi, harus diisi daya!
Kami menggunakan fungsi yang disediakan oleh objek baterai melalui kombinasi, seperti mendeteksi apakah baterai habis (berdasarkan nilai kembalian useBattery()).
tipe dasar
Dari HelloWorld hingga berorientasi objek, kami memanggil tipe dasar int, float, double, boolean, dll. (tipe primitif), yang merupakan kelas khusus. Kita dapat memahami bilangan bulat sebagai objek bertipe int. Tipe int dapat memiliki antarmuka operasi seperti penugasan, penambahan, dan pengurangan. Tipe biasa dapat dianggap sebagai perluasan dari tipe dasar. Kita telah melihat tipe primitif sebagai anggota data, parameter metode, nilai pengembalian metode, dan variabel otomatis di dalam metode. Objek alami dan bertipe umum, seperti objek kelas Baterai dan Obor, juga dapat digunakan di tempat ini.
Dalam bahasa C, tipe data yang tersedia (pada dasarnya) sudah diatur sebelumnya, seperti int dan float. Di Java, selain menggunakan tipe data preset ini, kita juga dapat menyesuaikan tipe data yang kita inginkan melalui kelas dan kemudian menggunakannya melalui kombinasi. Namun ada perbedaan antara tipe dasar dan tipe biasa. Tipe dasar sering digunakan dan menempati sejumlah kecil ruang memori. Oleh karena itu, di Java, demi efisiensi, tipe dasar ini memiliki metode manajemen memori yang berbeda dari tipe biasa (yaitu kelas khusus). Misalnya, tipe dasar akan mendapat alokasi ruang memori setelah dideklarasikan, sedangkan tipe biasa perlu menggunakan kata kunci new untuk mengalokasikan ruang memori.
Java menyediakan tipe umum yang sesuai untuk setiap tipe dasar. Misalnya, tipe dasar int sesuai dengan tipe Integer. Jika suatu objek bertipe dasar diubah menjadi variabel tipe umum yang sesuai, apa yang disebut tipe dasar menjadi tipe dalam pengertian umum (tidak ada lagi perbedaan dalam manajemen memori).
Dengan cara ini, kita memiliki pemahaman yang lebih dalam tentang konsep Java tentang "segala sesuatu adalah sebuah objek".
Meringkaskan
kombinasi,memiliki-a
tipe dasar