Object-Oriented Programming의 줄임말
객체 지향 프로그래밍 방식
1. 추상화(Abstraction)
- 상세 정보는 무시하고 필요성에 의해 있어야 하는 정보들만 간추려서 구성하는 것
- 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것
- ex) 추상 메서드와 인터페이스
2. 캡슐화(Encapsulation)
- 정보 은닉(information hiding): 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것
- 데이터 캡슐화: 변수와 메서드를 클래스로 묶는 것
- 높은 응집도, 낮은 결합도를 유지하여 유연함과 유지보수성 증가
3. 상속(Inheritance)
- 자식 클래스가 부모 클래스를 물려받고 기능을 추가하여 확장하는 것
- 서브 클래스는 슈퍼 클래스의 속성을 물려받아 재사용이 가능하므로 코드 작성의 시간과 비용 절약
- 여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정
4. 다형성(Polymorphism)
- 어떤 변수나 메서드가 상황에 따라서 다른 결과를 내는 것
- 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력
- 오버라이딩(Overriding): 슈퍼 클래스에서 구현된 메서드를 서브 클래스에서 자신의 특징에 맞게 재정의하는 것
- 오버로딩(Overloading): 클래스 내에서 이름이 같지만 다르게 동작하는 메서드