JS 다형성

sam_il·2022년 7월 22일
0

JavaScript

목록 보기
16/22
post-thumbnail

다형성 정말정말 중요!!

다형성(polymorphism)
OOP에서 핵심적인 기능

다형성은 특정 기능을 선언(설계)부분과 구현(동작)부분으로 분리한 후 구현 부분을 다양한 방법으로 만들어 선택해서 사용할 수 있게 하는 기능이다. 여기서 선언부분은 인터페이스라고도 한다. (인터페이스의 가장 큰 특징 추상메서드) 자세히 설명하자면 선언부분은 구현코드가 전혀 없는 텅 빈 상태이며 일종의 지켜야 할 약속으로 가득 찬 일종의 규약 문서라고 보자. 개발자는 문제를 해결하는 구현 코드를 선언 부분에 맞게 구현하면 된다. 즉 선언부분과 구현부분은 1:N의 다형성 관계가 형성된다. / 프로그래밍적 관점으로 말해보자면 부모클래스의 참조변수로 자식클래스의 인스턴스를 다룰 수 있는 것!! (자바에서 매우 중요)이라고 할 수 있다는 것이다.

ex) 멀티탭과 전원 케이블

ex) 심플 이미지 갤러리와 정렬 기능

  • this.정렬기능 인스턴스=null; //인스턴스는 new로 생성됨, 인스턴스는 참조변수 형태(주소를 가지기 때문에 숫자값 이런거 안되고 null값을 주어야 함)

  • 매개변수의 다형성, 멤버변수의 다형성 등 여러가지 다형성이 존재함

다형성과 데이터 타입과의 관계

  1. 일반 OOP언어에서의 데이터 타입의 의미
    자바스크립트에서는 데이터 타입이 중요하게 사용되진 않지만 일반 프로그래밍에서 데이터 타입은 정말 중요하다. (자바스크립트는 느슨한 타입 체크)


1) 상속관계
2) 구현관계
이 두개의 관계에 있을 때 다형성이 적용된다.

지금까지 내용을 정리해보면 일반 OOP언어에서 데이터 타입은 아래와 같은 규칙을 가지고 있다.꼭 숙지하고 넘어가도록 하자.
아래 내용 매우 중요
① 변수 및 매개변수 선언 시 특정 인터페이스 타입인 경우 반드시 특정 인터페이스를 구현한 클래스의 인스턴스만을 저장하거나 매개변수 값으로 넘길 수 있다.
② 변수 및 매개변수 선언 시 특정 클래스 타입인 경우 반드시 특정 클래스 또는 특정 클래스를 상속받은 자식 클래스의 인스턴스만을 저장하거나 매개변수 값으로 넘길 수 있다.

자바스크립트에서의 다형성

! 부모클래스에 존재하는 추상 메서드를 다 오버라이딩하지 않으면 결국 그 클래스도 추상 클래스가 된다. 그러나 추상 메서드를 반드시 다 구현해야 하는 건 아니고 필요한 부분만 오버라이딩하여 사용하면 된다.


다형성은 부모 클래스의 참조변수(인스턴스변수)로 자손 클래스의 인스턴스를 다룰 수 있는 것. A,B,C 등의 자손 클래스가 있다면 필요로 하는 클래스를 골라 사용할 수 있다는 것. 코드 관리등의 측면에서 매우 효율적이다.

profile
🍀

0개의 댓글