Empat tiang tersebut adalah Encapsulation, Abstraction, Inheritance, dan Polymorphism. Bersama-sama, mereka menjelaskan bagaimana OOP mengorganisir dan menggunakan kembali kode.
| Pillar | Ide inti |
|---|
| Encapsulation | Bundel data + perilaku; sembunyikan keadaan internal di balik antarmuka yang dikendalikan |
| Abstraction | Tunjukkan apa yang dilakukan objek, sembunyikan cara melakukannya |
| Inheritance | Subkelas menggunakan kembali dan memperluas kelas induk |
| Polymorphism | Satu antarmuka, banyak implementasi yang dipilih pada saat runtime |
abstract class Shape { // ABSTRACTION: "what", not "how"
abstract double area(); // each shape decides its own formula
}
class Circle extends Shape { // INHERITANCE: Circle is a Shape
private double r; // ENCAPSULATION: r is private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: own area()
}
class Square extends Shape {
private double s;
Square(double s) { this.s = s; }
double area() { return s * s; }
}
Shape shape = new Circle(2); // POLYMORPHISM in action:
System.out.println(shape.area()); // calls Circle.area() at runtime
Ini adalah alat, bukan tujuan. Memaksa pewarisan atau abstraksi di mana tidak diperlukan menciptakan kompleksitas. Pilih tiang yang sesuai dengan masalah.
Keempat kata ini adalah kosakata bersama desain OOP — wawancara dan tinjauan kode menganggap Anda mengerti mereka.
Setiap tiang memetakan ke manfaat konkret: enkapsulasi melindungi invariant, abstraksi mengurangi apa yang harus Anda pahami, pewarisan dan polimorfisme memungkinkan penggunaan kembali dan ekstensibilitas.