Kelas #
Dalam bahasa pemrograman Java, kelas (class) adalah cetak biru atau template dari objek. Kelas mendefinisikan struktur data dan perilaku (melalui atribut/properti dan metode) yang dimiliki oleh objek yang dihasilkan dari kelas tersebut. Dengan kata lain, kelas adalah definisi yang mendasari bagaimana sebuah objek harus dibuat dan bagaimana objek tersebut berinteraksi di dalam program.
Konsep Dasar #
-
Atribut (Properties/Fields/Variables): Atribut adalah variabel yang mendefinisikan karakteristik atau data yang dimiliki oleh objek. Atribut dideklarasikan di dalam kelas.
-
Metode (Methods): Metode adalah fungsi yang dideklarasikan di dalam kelas dan digunakan untuk mendefinisikan perilaku atau aksi yang dapat dilakukan oleh objek.
-
Objek (Instance): Objek adalah realisasi atau instansiasi dari sebuah kelas. Setiap objek memiliki salinan atribut dan dapat menggunakan metode yang didefinisikan dalam kelas.
-
Konstruktor (Constructor): Konstruktor adalah metode khusus yang dipanggil saat objek dibuat. Konstruktor biasanya digunakan untuk menginisialisasi atribut atau melakukan pengaturan awal yang diperlukan.
Deklarasi Kelas Sederhana #
public class Mobil {
// Atribut
String merk;
String warna;
int kecepatan;
// Konstruktor
public Mobil(String merk, String warna, int kecepatan) {
this.merk = merk;
this.warna = warna;
this.kecepatan = kecepatan;
}
// Metode
public void tambahKecepatan(int kenaikan) {
kecepatan += kenaikan;
System.out.println("Kecepatan sekarang: " + kecepatan + " km/h");
}
public void kurangiKecepatan(int pengurangan) {
kecepatan -= pengurangan;
System.out.println("Kecepatan sekarang: " + kecepatan + " km/h");
}
public void infoMobil() {
System.out.println("Merk: " + merk);
System.out.println("Warna: " + warna);
System.out.println("Kecepatan: " + kecepatan + " km/h");
}
}
Penjelasan:
- Atribut:
merk
,warna
, dankecepatan
adalah atribut yang mendeskripsikan karakteristik sebuah mobil. - Konstruktor: Konstruktor
Mobil(String merk, String warna, int kecepatan)
digunakan untuk menginisialisasi objek dengan nilai awal. - Metode:
tambahKecepatan
,kurangiKecepatan
, daninfoMobil
adalah metode yang digunakan untuk mengubah atau menampilkan informasi tentang mobil.
Menginstansiasi Objek #
Untuk menggunakan kelas Mobil
, kita perlu membuat objek dari kelas tersebut.
public class Main {
public static void main(String[] args) {
// Membuat objek Mobil
Mobil mobilSaya = new Mobil("Toyota", "Merah", 0);
// Menggunakan metode
mobilSaya.tambahKecepatan(50);
mobilSaya.kurangiKecepatan(10);
mobilSaya.infoMobil();
}
}
Penjelasan:
- Instansiasi:
Mobil mobilSaya = new Mobil("Toyota", "Merah", 0);
membuat objekmobilSaya
dari kelasMobil
dengan atributmerk
= “Toyota”,warna
= “Merah”, dankecepatan
= 0. - Metode:
mobilSaya.tambahKecepatan(50);
menambah kecepatan mobil sebesar 50 km/h.
Teknik Implementasi Kelas #
Kelas dan Objek #
- Kelas: Definisi dari objek, mendeskripsikan atribut dan metode yang dimiliki.
- Objek: Instansiasi dari kelas, yang berarti membuat variabel yang menyimpan referensi ke objek nyata yang dibuat berdasarkan cetak biru kelas.
Enkapsulasi (Encapsulation) #
Enkapsulasi adalah prinsip di mana atribut dan metode yang tidak perlu diakses dari luar kelas disembunyikan, biasanya dengan menggunakan modifier akses private
. Metode getter
dan setter
biasanya digunakan untuk mengakses dan mengubah nilai dari atribut yang disembunyikan.
public class AkunBank {
// Atribut dengan akses private
private String nomorRekening;
private double saldo;
// Konstruktor
public AkunBank(String nomorRekening, double saldoAwal) {
this.nomorRekening = nomorRekening;
this.saldo = saldoAwal;
}
// Metode untuk mendapatkan saldo (getter)
public double getSaldo() {
return saldo;
}
// Metode untuk menyetor uang (setter)
public void setoran(double jumlah) {
if (jumlah > 0) {
saldo += jumlah;
System.out.println("Setoran berhasil. Saldo sekarang: " + saldo);
}
}
// Metode untuk menarik uang
public void tarik(double jumlah) {
if (jumlah > 0 && jumlah <= saldo) {
saldo -= jumlah;
System.out.println("Penarikan berhasil. Saldo sekarang: " + saldo);
} else {
System.out.println("Penarikan gagal. Saldo tidak mencukupi.");
}
}
}
Penjelasan:
- Atribut
private
: AtributnomorRekening
dansaldo
disembunyikan dari akses luar untuk melindungi data. - Metode
getter
dansetter
: Digunakan untuk mengakses (getSaldo()
) dan mengubah nilai (setoran(double jumlah)
) atributsaldo
.
Pewarisan (Inheritance) #
Pewarisan adalah konsep di mana sebuah kelas (subkelas) dapat mewarisi atribut dan metode dari kelas lain (superkelas). Subkelas dapat menambahkan atribut dan metode tambahan atau meng-override metode yang ada.
// Superkelas
public class Hewan {
String nama;
int umur;
public Hewan(String nama, int umur) {
this.nama = nama;
this.umur = umur;
}
public void suara() {
System.out.println("Hewan membuat suara.");
}
}
// Subkelas
public class Anjing extends Hewan {
public Anjing(String nama, int umur) {
super(nama, umur);
}
@Override
public void suara() {
System.out.println("Anjing menggonggong: Guk guk!");
}
}
public class Main {
public static void main(String[] args) {
Anjing anjing = new Anjing("Buddy", 3);
anjing.suara(); // Output: Anjing menggonggong: Guk guk!
}
}
Penjelasan:
- Pewarisan:
Anjing
adalah subkelas dariHewan
, mewarisi atributnama
danumur
, serta metodesuara()
. - Override: Metode
suara()
diAnjing
meng-override metodesuara()
dariHewan
.
Polimorfisme #
Polimorfisme memungkinkan objek untuk diakses melalui referensi dari kelas induknya, dengan tetap mengeksekusi metode yang spesifik dari objek tersebut.
public class Main {
public static void main(String[] args) {
Hewan hewan1 = new Anjing("Buddy", 3);
Hewan hewan2 = new Kucing("Kitty", 2);
hewan1.suara(); // Output: Anjing menggonggong: Guk guk!
hewan2.suara(); // Output: Kucing mengeong: Meong!
}
}
Penjelasan:
- Polimorfisme:
hewan1
danhewan2
keduanya bertipeHewan
, tetapi mereka memanggil metodesuara()
dari kelas spesifik masing-masing (Anjing
danKucing
).
Abstraksi (Abstraction) #
Abstraksi adalah konsep untuk menyembunyikan detail implementasi dan hanya menunjukkan fitur penting dari objek. Ini bisa dicapai dengan menggunakan kelas abstrak atau interface.
Kelas Abstrak:
abstract class Kendaraan {
abstract void bergerak();
}
class Mobil extends Kendaraan {
void bergerak() {
System.out.println("Mobil bergerak dengan roda.");
}
}
public class Main {
public static void main(String[] args) {
Kendaraan mobil = new Mobil();
mobil.bergerak(); // Output: Mobil bergerak dengan roda.
}
}
Penjelasan:
- Kelas Abstrak:
Kendaraan
adalah kelas abstrak yang mendefinisikan metodebergerak()
tanpa implementasi. KelasMobil
mengimplementasikan metodebergerak()
.
Kesimpulan #
Kelas adalah fondasi utama dalam pemrograman berorientasi objek di Java, memungkinkan Anda untuk mengelompokkan data dan perilaku terkait ke dalam satu entitas yang terstruktur. Dengan menggunakan teknik seperti enkapsulasi, pewarisan, polimorfisme, dan abstraksi, Anda dapat menulis kode yang lebih modular, mudah dipelihara, dan dapat digunakan kembali. Implementasi kelas dengan teknik yang tepat memungkinkan pembuatan program yang lebih efisien dan fleksibel.