4つの柱はEncapsulation、Abstraction、Inheritance、Polymorphismです。これらは、OOPがコードをどのように整理し、再利用するかを説明しています。
4つの柱はEncapsulation、Abstraction、Inheritance、Polymorphismです。これらは、OOPがコードをどのように整理し、再利用するかを説明しています。
| Pillar | コアアイデア |
|---|
| Encapsulation | データ+振る舞いをバンドル;内部状態を制御されたインターフェースの背後に隠す |
| Abstraction | オブジェクトが何をするかを公開し、どのようにするかを隠す |
| Inheritance | サブクラスは親クラスを再利用して拡張する |
| Polymorphism | 1つのインターフェース、実行時に選択される多くの実装 |
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
これらはツールであり、目標ではありません。不要な継承や抽象化を強制すると複雑性が生じます。問題に適合した柱を選択してください。
この4つの言葉はOOP設計の共有語彙です — インタビューとコードレビューではこれらを理解していることが前提です。
各柱は具体的な利点に対応しています:カプセル化は不変性を保護し、抽象化は理解する必要のある内容を削減し、継承とポリモーフィズムは再利用と拡張性を可能にします。