자바칩

[Spring] 객체 지향의 4대 특성 => 캡상추다 본문

Study/Spring

[Spring] 객체 지향의 4대 특성 => 캡상추다

아기제이 2024. 6. 10. 18:12
728x90
  1. 캡슐화 (Encapsulation): 정보 은닉
    • 정의: 데이터(속성)와 그 데이터(속성)를 조작하는 메서드를 하나의 객체로 묶는 것
    • 설명: 객체 내부의 데이터(속성)와 메서드를 외부에서 직접 접근하지 못하도록 하고, 객체를 통해서만 접근할 수 있도록 제한한다. 이를 통해 데이터의 무결성을 유지하고, 객체 간의 상호작용을 명확하게 정의할 수 있다.
    • 예시: 클래스 내의 private 속성은 외부에서 직접 접근할 수 없고, public 메서드를 통해서만 접근 가능하다.
  2. 상속 (Inheritance): 재사용 + 확장
    • 정의: 하나의 클래스가 다른 클래스의 특성과 기능을 물려받는 것
    • 설명: 기존 클래스를 재사용하여 새로운 클래스를 만들 수 있게 한다. 상속을 통해 코드의 재사용성을 높이고, 공통적인 기능을 부모 클래스에서 정의하고 자식 클래스에서는 추가적인 기능이나 특성을 정의할 수 있다.
    • 예시: Animal 클래스를 상속받아 Dog와 Cat 클래스를 만들면, Animal 클래스의 속성과 메서드를 Dog와 Cat 클래스에서 사용할 수 있다.
  3. 추상화 (Abstraction): 모델링
    • 정의: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 대한 대상만을 가지고 재조합하는 것 = 모델링
    • 설명: 구체적인 구현을 숨기고, 사용자에게 필요한 인터페이스만을 제공하여 복잡성을 줄인다. 추상 클래스와 인터페이스를 통해 공통적인 속성과 메서드를 정의하고, 이를 구현하는 클래스들이 구체적인 동작을 제공한다.
    • 예시: Shape라는 추상 클래스를 정의하고, 이 클래스에 draw라는 추상 메서드를 선언한다. Circle과 Rectangle 클래스가 Shape 클래스를 상속받아 draw 메서드를 구현한다.
  4. 다형성 (Polymorphism): 사용편의성
    • 정의: 같은 이름의 메서드가 다양한 방식으로 동작할 수 있는 것
    • 설명: 다형성은 주로 메서드 오버로딩(Overloading = 적재하기)과 오버라이딩(Overriding = 올라타기)을 통해 구현된다. 이를 통해 동일한 인터페이스를 사용하여 다양한 객체를 처리할 수 있다.
    • 예시: Animal 클래스에 speak 메서드가 정의되어 있고, Dog 클래스와 Cat 클래스에서 이를 각각 오버라이딩하여 Dog 객체는 bark 소리를 내고, Cat 객체는 meow 소리를 낼 수 있다.