추상화(Abstraction)
- 객체들의 공통적인 특징을 도출해 내는 것.
- 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다.
캡슐화(Encapsulation)
- 연관 있는 변수와 함수를 하나로 묶는 것 (클래스)
- 클래스라는 캡슐에 분류된 집단 별로 넣어 실체화 하면 객체를 만들 수 있다.
- 접근한정자를 통해 객체가 내부적으로 기능을 어떻게 구현하는지를 감출 수 있어, 정보은닉이 가능하다.
- 목적 : 내부의 기능 구현이 변경되더라도 그 기능을 사용하는 코드는 영향을 받지 않도록 함.
상속성(Inheritance)
- 재사용성과 확장성
- 상위 클래스의 특징을 하위 클래스에서 물려받는 것.
- 상위 클래스에 정의된 동작을 다시 사용, 확장 및 수정하는 하위 클래스를 만드는 것.
- 목적 : 반복된 코드의 중복을 줄여주고, 유지 보수의 편리함을 제공함. 다형성을 구현할 수 있음.
다형성(Polymorphism)
- 한 객체가 여러가지(poly) 모습(morph)을 갖는 것.
- 같은 (상위)타입이지만, 하나의 메시지에 대해 각 객체가 서로 다른 방법으로 응답할 수 있는 것.
- 오버라이딩과 오버로딩을 통해 구현된다.
- 목적 : 동일 메시지로 여러 행위를 할 수 있음으로 프로그램의 확장성과 클래스의 재사용성을 높여준다.
일반적으로 3대 특징이라고 부를 때는 '캡슐화' / '상속' / '다형성'을 말하여
5대 특징이면 '정보은닉' 등이 포함되는듯.
'🛡️ 기술 면접용 질문들 > 프로그래밍 관련' 카테고리의 다른 글
배열 vs 리스트 vs 연결 리스트 (0) | 2021.04.15 |
---|---|
Big-O 표기법 (0) | 2021.04.15 |
클래스(Class) vs 구조체(Struct) (0) | 2021.04.13 |
객체 지향적 설계 원칙 (SOLID원칙) (0) | 2021.04.12 |
오버로딩(Overloading) vs 오버라이딩(Overriding) (0) | 2021.04.12 |