[Dart] 다형성(Polymorphism)

AsherKim·2023년 5월 29일
0

플러터 TIL

목록 보기
10/18

다형성(Polymorphism)은 프로그래밍 언어에서 객체 지향 프로그래밍의 중요한 개념 중 하나이다. 다형성은 동일한 인터페이스를 가진 객체들이 다른 방식으로 동작할 수 있는 능력을 의미한다. 이는 객체들이 동일한 메시지를 받아들이지만, 각자의 방식으로 해당 메시지에 응답하는 것을 가능하게 한다.

Dart 언어에서 다형성은 클래스 상속과 인터페이스를 통해 구현된다. 클래스 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스가 상속받을 수 있으며, 인터페이스는 특정 메서드들의 집합을 정의하여 해당 인터페이스를 구현한 클래스들이 동일한 메서드를 가지게 할 수 있다.

abstract class Shape {
  void draw();
}

class Circle extends Shape {
  
  void draw() {
    print("원을 그립니다.");
  }
}

class Triangle extends Shape {
  
  void draw() {
    print("삼각형을 그립니다.");
  }
}

void drawShape(Shape shape) {
  shape.draw();
}

void main() {
  Shape circle = Circle();
  Shape triangle = Triangle();

  drawShape(circle);    // "원을 그립니다." 출력
  drawShape(triangle);  // "삼각형을 그립니다." 출력
}

위의 예시에서 drawShape 함수는 Shape 타입의 매개변수를 받아들이고 있다. 이 함수는 shape 객체에 대해 draw 메서드를 호출하므로, 실제로 전달되는 객체에 따라 호출되는 메서드의 구현이 달라진다. 이로써 drawShape 함수는 동일한 메서드를 사용하면서도 서로 다른 객체들에 대해 다양한 동작을 수행할 수 있게 된다.

이것이 다형성의 핵심 개념이다. 다형성을 통해 코드의 재사용성과 유연성이 향상되며, 객체들 간의 관계를 더욱 유연하게 구성할 수 있다. Dart 언어는 객체 지향 프로그래밍의 기본 개념을 잘 지원하며, 다형성은 이를 효과적으로 활용할 수 있는 강력한 도구이다.

profile
추리를 좋아하는 개발자

0개의 댓글