다형성이란 무엇인가요?
dictionary.com의 다형성(Polymorphism) 정의는 "독립적인 조직이나 동일한 조직에서 근본적인 차이 없이 서로 다른 형태, 단계 또는 유형으로 발생하는 것"입니다. 이 정의에서 우리는 다음과 같이 생각할 수 있습니다. 동일한, 여러 상태 또는 단계를 통한 개체. 실제로 그 실제 의미는 실제 개발에서는 인터페이스나 기본 클래스의 프로그래밍에만 집중하면 되며 객체가 속한 특정 클래스(클래스)에 대해 걱정할 필요가 없다는 것입니다.
디자인 패턴에 대해 잘 알고 계시다면, 비록 사전적인 이해만 되어도 이 개념을 이해할 수 있을 것입니다. 실제로 PHP5 다형성은 패턴 기반 디자인 프로그래밍에서 가장 뛰어난 도구일 수 있습니다. 이를 통해 유사한 객체를 논리적인 방식으로 구성할 수 있으므로 코딩할 때 객체의 특정 유형에 대해 걱정할 필요가 없으며 원하는 인터페이스나 기본 클래스만 프로그래밍하면 됩니다. 애플리케이션이 추상화될수록 유연성은 더욱 높아집니다. 다형성은 동작을 추상화하는 가장 좋은 방법 중 하나입니다.
예를 들어 Person이라는 클래스를 생각해 보겠습니다. David, Charles 및 Alejandro라는 클래스를 사용하여 Person을 하위 클래스로 분류할 수 있습니다. Person에는 추상 메서드 AcceptFeedback()이 있으며 모든 하위 클래스는 이 메서드를 구현해야 합니다. 이는 기본 Person 클래스의 하위 클래스를 사용하는 모든 코드가 AcceptFeedback() 메서드를 호출할 수 있음을 의미합니다. 객체가 David인지 Alejandro인지 확인할 필요가 없으며 그것이 Person이라는 것을 아는 것만으로도 충분합니다. 결과적으로 코드는 "최소 공통 분모"인 Person 클래스에만 집중하면 됩니다.
이 예제의 Person 클래스는 인터페이스로 생성될 수도 있습니다. 물론 위와 비교하면 몇 가지 차이점이 있습니다. 주로 인터페이스는 어떤 동작도 제공하지 않고 일련의 규칙만 결정한다는 것입니다. Person 인터페이스에는 "AddFeedback() 메서드를 지원해야 합니다"가 필요한 반면, Person 클래스는 AddFeedback() 메서드에 대한 일부 기본 코드를 제공할 수 있습니다. 이에 대한 이해는 "AddFeedback() 지원을 선택하지 않으면 다음과 같습니다. 기본 구현을 제공해야 합니다. "인터페이스 또는 기본 클래스를 선택하는 방법은 이 문서의 주제를 벗어납니다. 그러나 일반적으로 기본 클래스를 통해 기본 메서드를 구현해야 합니다. 클래스가 구현하는 원하는 기능 세트를 간단하게 설명할 수 있는 경우 인터페이스를 사용할 수도 있습니다.
대중적인 이해
다형성의 가장 직접적인 정의는 상속 관계가 있는 서로 다른 클래스의 객체가 동일한 이름의 멤버 함수를 호출하여 서로 다른 반응 결과를 생성할 수 있도록 허용하는 것입니다
다형성 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|