밍비
프로그램의 편린
밍비
전체 방문자
오늘
어제
  • 분류 전체보기 (64)
    • Spring (2)
    • TIL (23)
    • 프로그래머스 (12)
    • Udemy (16)
    • Typescript (2)
    • MERN (1)
    • AWS (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리액트 reducer
  • 한입크기로잘라먹는리액트
  • react
  • 리스트 조회
  • AWS Regions
  • Points of Presence
  • state 끌어올리기
  • Page Moving
  • 리액트
  • useRef
  • 수평 스케일링
  • 분산저장소
  • 리액트 생애주기
  • overflow-wrap
  • useParams
  • 데이터 수정
  • Availability Zones
  • 함수형 update
  • state 관리
  • Edge Locations
  • useState
  • API 호출
  • DOM
  • useNavigate
  • 리액트 프로젝트 만들기
  • State 합치기
  • 서비스아키텍처
  • 한입 크기로 잘라먹는 리액트
  • 컴포넌트트리
  • 네이버커넥트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밍비

프로그램의 편린

Spring

객체지향의 특징

2025. 3. 9. 04:15
728x90

이거 진짜 무조건 머리에 박고 있어야됨

 

추상화

: 클래스들의 공통적인 특성을 따로 정의해둔 것

예를 들어, Rabbit, Bear, Dog 클래스에 모두 run() 메소드를 따로 쓰지 말고, Animal() 클래스를 따로 정의해서 공통되는 특성을 미리 정의해두고, 각 클래스에서 쓸 때는 오버로딩 오버라이딩 해서 쓰는 거다.

추상클래스, 인터페이스로 구현 가능.

 

추상 클래스 vs 인터페이스

공통 특징

- 그안에 정의된 모든 추상메서드를 구현해야됨!

(다만 추상메서드가 추상메서드를 상속하면 구현안해도됨)

 

추상클래스 특징

- 일부 구현을 포함 가능!!!! -> 공통 기능 구현 가능

- 단일 상속만 가능!!

 

인터페이스 특징

- 보통 동작을 선언만 해놓은 청사진으로만 사용 

원래 메소드 구현자체가 안됐는데 자바8 이후부터는 default 메소드로 정의하면 구현가능하다고...

- 다중 구현 가능 (클래스만 상속(Inherit)이라는 용어 사용해서, 다중 상속이라는 표현은 안쓰는듯)

 

note. 다중구현이란?

Flyable이랑 Swimmable 인터페이스를 분리하고, Duck 클래스가 둘다 받아서 구현하는 것.

코드가 유연해지고 재사용성이 올라감

 

결국, 추상클래스는 일부 기능을 미리 구현해놓고 싶을 때!!

인터페이스는 동작을 정의만 하거나, 다중 구현이 필요할 때!! 사용

 

캡슐화

: 데이터(필드, 변수)와 메서드(기능)를 하나의 단위(클래스)로 묶어서, 외부에서 변경하지 못하게 하는 것

대신 getter(), setter() 를 따로 정의해서 안전하게 조작할 수 있도록 허용함

(e.g. setter에 validation을 추가해서 나이를 음수로 못 넣게 하는 게 가능)

 

객체의 데이터를 보호하고, 외부에서 직접 접근하는 것을 제한할 수 있음

다형성

: 하나의 인터페이스나 부모클래스를 사용해 같은 메서드를 호출해도 각 객체가 다르게 동작하는 것

 

- 오버라이딩(Overriding) → 부모 클래스의 메서드를 하위 클래스에서 재정의

- 오버로딩(Overloading) → 같은 이름의 메서드를 매개변수의 개수나 타입을 다르게 정의

 

다형성이 필요한 이유

객체 간 결합도를 낮추고(decoupling) 확장성을 높일 수 있음

-> 인터페이스를 구현한 객체 인스턴스를 실행시간에 유연하게 바꿀수있음

클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 바꿀 수 있다.

 

대신 인터페이스가 변경될 경우, 서버 모두에 큰 변화가 생김

-> 인터페이스 설계가 매우 중요!!!

728x90

'Spring' 카테고리의 다른 글

스프링 프레임워크와 스프링 부트 개념  (0) 2025.03.09
    밍비
    밍비

    티스토리툴바