[Dart] Object Oriented Programming - 다형성

yeahsilver·2023년 6월 20일
0
post-thumbnail

다형성이란 무엇인가?

  • 하나의 변수명이나 함수명이 상황에 따라 다르게 해셕될 수 있는 것
  • Poly (다양한) + morph (형태) => 다양한 형태를 가진 객체

예시

  • 사람, 개, 새는 걸을 수 있다

  • 하나의 리모컨은 모든 티비를 작동하게 할 수 있다

  • 연산자 +을 사용하는 경우 정수형에서는 숫자가 더해지고, String에서는 문자가 합쳐진다.

    class Abc {
      void add(int x, int y) {
        print("num addition=" + (a + b));
      }
    
      void add(double x, double y) {
        print("floating num addition=" + (a + b));
      }
    
      String add(String x, String y) {
        return (x + y);
      }
    }
  • add()메소드가 리턴 형에 따라 다르게 작동함

다형성의 종류

메소드 오버로딩

: 클래스가 같은 이름, 다른 갯수의 매개변수를 가지는 메소드를 가지고 있는 경우

class Abc {
    int add (int a, int b) {
        return a+b;
    }

    int add(int a, int, b, int c) {
        return a+b+c;
    }

}
  • 주의: dart에서는 overloading을 지원하지 않음
  • 대신 Optional Parameter 사용 가능

메소드 오버라이딩

: 자식 클래스가 부모 클래스와 같은 메소드를 가지고 있는 경우

class A {
	String add(int a, int b) {
    	return "Parent Addition = ${a+b}";
    }
}

class B extends A {
	
	String add(int a, int b) {
    	return "Child Addition = ${a+b}";
    }
}

다형성의 장점

  • 코드를 재사용 함으로써 코드를 더욱 간결하고 관리하기 쉽게 만들어줌
  • 공통 인터페이스를 사용함으로써 구현 세부사항을 숨기며 다른 클래스들과 통신 할 수 있음

Reference

profile
Hello yeahsilver's world!

0개의 댓글