다형성 ( polymorphism )

nouveau·2023년 12월 6일
0

다형성이란?

그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로,
프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이
다양한 자료형(type)에 속하는 것이 허가되는 성질

참고 : https://ko.wikipedia.org/wiki/다형성(컴퓨터과학)

⇒ 어떤 것을 이렇게도 볼수 있고, 저렇게도 볼 수 있는 것

  • 핸들이 있고, 오른 페달이 엑셀, 왼쪽이 브레이크인 것 = 차, 그랜저, 버스 등…
    세부적인 부분은 다르지만, 어쨌든 대충 보면 그냥 차다
abstract class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void hello();
}

class Korean extends Person {
  String nation = "Korea";

  Korean(super.name, super.age);

  
  void hello () {
    print("안녕하세요.");
  }
}

main() {
  Korean nouveau = Korean("nouveau", 20);
  nouveau.hello();

  Person yongyeon = Korean("yongyeon", 20);
  yongyeon.hello();
}

정리

인스턴스를 애매하게 퉁치기

  • 상속에 의한 is-a 관계가 성립한다면, 인스턴스를 부모 클래스 타입의 변수에 대입할 수 있다
  • 부모 클래스 타입 변수에 대입하는 것으로, 퉁 칠 수 있음

상자의 타입 과 내용의 타입 의 역할

  • 어떤 멤버를 이용할 수 있는가는 상자의 타입이 결정한다
  • 멤버가 어떻게 움직이는지는 내용의 타입이 결정한다

취급 변경

  • as 키워드를 사용하여 타입 캐스팅을 수행한다
  • is 키워드를 사용하여 타입을 검사할 수 있다

다형성

  • 같은 부모를 가지는 다른 인스턴스를 동일시하여, 부모 클래스 타입의 에 담을 수 있다
  • 마찬가지로, 부모 클래스 타입의 인수나 리턴 값을 이용하여, 다른 클래스를 모아서 처리 가능
  • 동일시 취급 해도, 각각의 인스턴스는 각 클래스의 정의를 따르고 다른 동작을 한다.

0개의 댓글