네 가지 기둥은 encapsulation(캡슐화), abstraction(추상화), inheritance(상속), **polymorphism(다형성)**입니다. 이들은 함께 OOP가 코드를 구성하고 재사용하는 방식을 설명합니다.
네 가지 기둥은 encapsulation(캡슐화), abstraction(추상화), inheritance(상속), **polymorphism(다형성)**입니다. 이들은 함께 OOP가 코드를 구성하고 재사용하는 방식을 설명합니다.
| 기둥 | 핵심 개념 |
|---|
| Encapsulation | 데이터 + 동작을 묶고, 내부 상태를 통제된 인터페이스 뒤에 숨김 |
| Abstraction | 객체가 무엇을 하는지 드러내고, 어떻게 하는지는 숨김 |
| Inheritance | 서브클래스가 부모 클래스를 재사용하고 확장함 |
| Polymorphism | 하나의 인터페이스, 런타임에 선택되는 여러 구현 |
abstract class Shape { // ABSTRACTION: "무엇을", "어떻게"가 아님
abstract double area(); // 각 도형이 자신의 공식을 결정
}
class Circle extends Shape { // INHERITANCE: Circle 은 Shape 이다
private double r; // ENCAPSULATION: r 은 private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: 자신의 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 동작:
System.out.println(shape.area()); // 런타임에 Circle.area() 호출
이들은 도구이지 목표가 아닙니다. 필요하지 않은 곳에 inheritance나 abstraction을 억지로 적용하면 복잡성만 생깁니다. 문제에 맞는 기둥을 선택하세요.
이 네 단어는 OOP 설계의 공통 어휘입니다 — 면접과 코드 리뷰에서는 여러분이 이를 안다고 전제합니다.
각 기둥은 구체적인 이점과 연결됩니다: encapsulation은 불변식을 보호하고, abstraction은 이해해야 할 것을 줄이며, inheritance와 polymorphism은 재사용과 확장성을 가능하게 합니다.