Pemrograman berorientasi objek bergantung pada empat prinsip inti — Enkapsulasi, Pewarisan, Polimorfisme, lan Abstraksi. Java dibangun di sekitar ini, lan memahaminya iku sangat penting kanggo ngrancang program Java.
1. Enkapsulasi — bundel data + sembunyikan internal
public class Account {
private double balance; // hidden — can't be accessed directly outside
public void deposit(double amount) { // controlled access via methods
if (amount > 0) balance += amount; // can enforce rules
}
public double getBalance() { return balance; }
}
Enkapsulasi nyembunyake kahanane internal (private) lan mbukak akses terkendali (metode publik/getter/setter). Iki nglindhungi invariant — sampeyan ora bisa nyetel saldo negatif langsung — lan ngadakake sampeyan bisa ngganti internal tanpa nyuwil maido.
2. Pewarisan — nggunakake maneh liwat relasi "is-a"
class Animal {
void eat() { System.out.println("eating"); }
}
class Dog extends Animal { // Dog IS-A Animal — inherits eat()
void bark() { System.out.println("woof"); }
}
Pewarisan ngadakake subkelas nggunakake maneh lan ngluwihi tindakan superclass, ngeneki relasi "is-a" lan nyegah duplikasi kode.
3. Polimorfisme — siji interface, akeh wujud
Animal a = new Dog(); // a Dog treated as an Animal
a.makeSound(); // calls Dog's overridden version at RUNTIME (dynamic dispatch)
// the same method behaves differently depending on the actual object:
List<Animal> animals = List.of(new Dog(), new Cat());
for (Animal animal : animals) animal.makeSound(); // each makes its own sound
Polimorfisme ngadakake sampeyan bisa ngathe subkelas beda kanthi seragam liwat jinis umum, kalawan metode nyata obyek sing ditimpa diarunke ing waktu runtime — ngadakake kode fleksibel lan bisa dikembangake.
4. Abstraksi — kapakne apa, sembunyike kepiye
interface PaymentProcessor {
void pay(double amount); // WHAT it does, not HOW
}
class StripeProcessor implements PaymentProcessor {
public void pay(double amount) { /* complex implementation hidden */ }
}
// callers depend on the abstraction, not the concrete implementation
PaymentProcessor processor = new StripeProcessor();
Abstraksi (liwat interface/kelas abstrak) kapakne kontrak sing disederhanakan nalika nyembunyake implementasi rumit — ngadakake sampeyan bisa ngganti implementasi lan nyudhe kopling.
Kepiye carane penting
Rong papat pilar iku dhasar desain berorientasi objek lan Java dhewe.
Enkapsulasi nglindhungi integritas data lan ngadakake owah-owahan aman; pewarisan nyengkuyung nggunakake maneh; polimorfisme nyayaake fleksibilitas lan ekstensibilitas (ngathe akeh jinis kanthi seragam, tindakan dibaleni ing runtime); abstraksi nyudhe kopling lan kerumitan.
Memahaminya bukan mung istilah — iku gabay kepiye sampeyan ngrancang kelas, ngrancang API, lan ngrancang sistem sing bisa dijaga lan dikembangake.
Iki uga salah siji topik interview sing paling umum amarga iku nudhukaké apa pengembang mikir kanthi istilah OOP sing bener, sing penting kanggo kerja kanthi efektif ing ekosistem Java sing fokus kelas.
