Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

Backend/Spring

다형성 (Polymorphism)

2023. 1. 7. 17:43

Polymorphism은 “many forms”를 의미한다.

 

넓은 의미에서 다형성은 하나의 entity를 여러 형태로 사용할 수 있는 것을 의미한다.

  • 하나의 함수를 여러 형태로 사용하는 오버로딩과 오버라이딩
  • 하나의 클래스를 여러 형태로 사용하는 generic
  • 하나의 변수를 여러 형태로 사용하는 subtyping

모두가 다형성이 된다.

 

하지만, 일반적으로 다형성은 하나의 상위 타입 변수에 여러 하위 타입 객체를 갈아 끼울 수 있는 것을 의미한다.

다형성을 이용하면 여러 타입의 객체를 동일한 방식으로 사용할 수 있게 된다. 즉, 동일한 인터페이스를 갖고 사용할 수 있게 된다.

말하자면 여러 타입을 표준화하게 되는 것이다.

interface Car {
	void ride();
}

class Sonata implements Car {
	public void ride() {
    	System.out.println("소나타 탑승");
    }
}

class Avante implements Car {
	public void ride() {
    	System.out.println("아반떼 탑승");
    }
}

class Client {
	Car myCar;

	public void manageCars() {
    	myCar = new Sonata();
        myCar.ride();
        
        myCar = new Avante();
        myCar.ride();
    }
}

 

Car 타입 변수 하나로 Sonata 인스턴스와 Avante 인스턴스를 모두 사용할 수 있다.

'Backend > Spring' 카테고리의 다른 글

SOLID  (0) 2023.01.08
    'Backend/Spring' 카테고리의 다른 글
    • SOLID
    Mathlife
    Mathlife

    티스토리툴바