> 백엔드 개발 > PHP 튜토리얼 > PHP 객체 지향 프로그래밍_php 기술의 다형성을 설명하는 예

PHP 객체 지향 프로그래밍_php 기술의 다형성을 설명하는 예

WBOY
풀어 주다: 2016-05-16 20:08:37
원래의
1092명이 탐색했습니다.

다형성이란 무엇인가요?
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

<&#63;php

    

  /**

   * 声明接口Demo

   * @author wzy

   *

   */

  interface Demo

  {

    

    const NAME = "wangzhengyi";

    

    const AGE = 25;

    

    function fun1 (); // 声明方法默认是public abstract

    function fun2 ();

  }

    

  class One implements Demo

  {

    

    public function fun1 ()

    {

      echo Demo::NAME . "就读于中国传媒大学";

    }

    

    public function fun2 ()

    {

      echo Demo::NAME . "的年龄是" . Demo::AGE;

    }

  }

    

  class Two implements Demo

  {

    

    public function fun1 ()

    {

      echo Demo::NAME . "在北京灵创众和科技有限公司实习中";

    }

    

    public function fun2 ()

    {

      echo Demo::NAME . "去年的年龄是24";

    }

  }

    

  // 同一个接口,实现同一个方法,不同的对象,反应结果不同。这就是多态的表现和应用

    

  $one = new One();

  $one->fun1(); // wangzhengyi就读于中国传媒大学

  $one->fun2(); // wangzhengyi的年龄是25

    

  echo "<br>";

    

  $two = new Two();

  $two->fun1(); // wangzhengyi在北京灵创众和科技有限公司实习中

  $two->fun2(); // wangzhengyi去年的年龄是24

로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿