자바칩
[Spring] 객체 지향의 4대 특성 => 캡상추다 본문
728x90
- 캡슐화 (Encapsulation): 정보 은닉
- 정의: 데이터(속성)와 그 데이터(속성)를 조작하는 메서드를 하나의 객체로 묶는 것
- 설명: 객체 내부의 데이터(속성)와 메서드를 외부에서 직접 접근하지 못하도록 하고, 객체를 통해서만 접근할 수 있도록 제한한다. 이를 통해 데이터의 무결성을 유지하고, 객체 간의 상호작용을 명확하게 정의할 수 있다.
- 예시: 클래스 내의 private 속성은 외부에서 직접 접근할 수 없고, public 메서드를 통해서만 접근 가능하다.
- 상속 (Inheritance): 재사용 + 확장
- 정의: 하나의 클래스가 다른 클래스의 특성과 기능을 물려받는 것
- 설명: 기존 클래스를 재사용하여 새로운 클래스를 만들 수 있게 한다. 상속을 통해 코드의 재사용성을 높이고, 공통적인 기능을 부모 클래스에서 정의하고 자식 클래스에서는 추가적인 기능이나 특성을 정의할 수 있다.
- 예시: Animal 클래스를 상속받아 Dog와 Cat 클래스를 만들면, Animal 클래스의 속성과 메서드를 Dog와 Cat 클래스에서 사용할 수 있다.
- 추상화 (Abstraction): 모델링
- 정의: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 대한 대상만을 가지고 재조합하는 것 = 모델링
- 설명: 구체적인 구현을 숨기고, 사용자에게 필요한 인터페이스만을 제공하여 복잡성을 줄인다. 추상 클래스와 인터페이스를 통해 공통적인 속성과 메서드를 정의하고, 이를 구현하는 클래스들이 구체적인 동작을 제공한다.
- 예시: Shape라는 추상 클래스를 정의하고, 이 클래스에 draw라는 추상 메서드를 선언한다. Circle과 Rectangle 클래스가 Shape 클래스를 상속받아 draw 메서드를 구현한다.
- 다형성 (Polymorphism): 사용편의성
- 정의: 같은 이름의 메서드가 다양한 방식으로 동작할 수 있는 것
- 설명: 다형성은 주로 메서드 오버로딩(Overloading = 적재하기)과 오버라이딩(Overriding = 올라타기)을 통해 구현된다. 이를 통해 동일한 인터페이스를 사용하여 다양한 객체를 처리할 수 있다.
- 예시: Animal 클래스에 speak 메서드가 정의되어 있고, Dog 클래스와 Cat 클래스에서 이를 각각 오버라이딩하여 Dog 객체는 bark 소리를 내고, Cat 객체는 meow 소리를 낼 수 있다.
'Study > Spring' 카테고리의 다른 글
[Spring] @RunWith/@ExtendWith 와 @WebMvcTest 의 차이점 (0) | 2024.07.19 |
---|---|
[Spring] @InjectMocks 와 @Mock 의 차이점 (0) | 2024.07.19 |
[Spring] 디자인 패턴 (0) | 2024.06.10 |
[Spring] 객체 지향 설계 5원칙 (SOLID) (0) | 2024.06.10 |
[Spring] AOP 개념 (1) | 2024.06.02 |