A négy pillér a Encapsulation, Abstraction, Inheritance és Polymorphism. Együtt azt írják le, hogy az OOP hogyan szervezi és használja újra a kódot.
| Pillér | Alapötlet |
|---|
| Encapsulation | Adatok + viselkedés összekapcsolása; belső állapot elrejtése kontrolált interfész mögött |
| Abstraction | Annak megmutatása, mit csinál egy objektum, annak elrejtése, hogyan csinálja |
| Inheritance | Az alosztály újrahasználja és kiterjeszti a szülőosztályt |
| Polymorphism | Egy interfész, sok futásidőben kiválasztott implementáció |
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
Ezek eszközök, nem célok. Az inheritance vagy abstraction kényszeres alkalmazása, ahol nem szükséges, bonyolultságot hoz létre. Válassza a problémához illő pillért.
Ez a négy szó az OOP-tervezés közös szókincse — az interjúk és kódfelülvizsgálatok feltételezik, hogy ismeri őket.
Minden pillér egy konkrét előnyre térképez: az encapsulation megvédi az invariánsokat, az abstraction csökkenti azt, amit meg kell értenie, az inheritance és polymorphism lehetővé teszik az újrafelhasználást és a bővíthetőséget.