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

PHP 객체지향 다형성_php 기술을 설명하는 예

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

다형성이란 무엇인가요?

다형성은 데이터베이스 추상화 및 상속에 이어 객체지향 언어의 세 번째 특징입니다. 다형성(Polymorphism)은 여러 형태를 의미하며 여러 형태를 표현할 수 있는 능력을 가지고 있습니다. 객체 지향 표현에서는 객체 유형에 따라 다르게 처리됩니다. 다형성을 통해 각 개체는 고유한 방식으로 공통 메시지에 응답할 수 있습니다. 다형성은 소프트웨어 유연성과 재사용성을 향상시킵니다.

doing() 메소드를 생성하면 학생이라면 수업용으로, 회사원이라면 업무용으로 출력합니다.

일반적인 관행

판단이 필요한 경우 사용

코드 복사 코드는 다음과 같습니다.

/**
* PHP 다형성
* 충타이 블로그
​*/

// 학생 클래스 정의
반 학생{
공개 함수 cla(){
echo "학생들이 수업중이에요!
";
}
}

// 직원 클래스 정의
학급 사무실{                                                                     공개 함수 Wor(){
echo "직원이 일하고 있어요!
";
}
}

// 객체 유형을 결정하는 방법
함수 수행($obj){
If($obj 인스턴스of 학생){
$obj->cla();
           }elseif($obj 인스턴스 오브 오피스){
$obj->wor();
         }그 외{
echo "그런 개체는 없습니다!";
}
}

일 중(new Student()); // 학생은 수업 중입니다
일 중(새 사무실()); // 직원이 일하고 있습니다

위 결과 출력:

학생들이 수업 중입니다

직원들이 일하고 있습니다

이 일반적인 방법에는 단점이 있습니다. 즉, 개체가 많으면 if..else..가 매우 길고 유연하지 않다는 것입니다.



다형성 관행

공개 추상 메서드를 정의하면 모든 하위 클래스가 이를 상속합니다.


코드 복사 코드는 다음과 같습니다.
/**
* PHP 다형성
* 충타이 블로그
​*/

//공개 클래스 정의
클래스 펍{
보호된 함수 작동 중(){
echo "이 메소드는 서브클래스에서 오버로드되어야 합니다!";
}
}

// 학생 클래스를 정의하고 공개 클래스 pub을 상속합니다
학급 학생이 술집을 확장합니다{
공개 함수 작업(){
echo "학생들이 수업중이에요!
";
}
}

// 직원 클래스를 정의하고 공개 클래스 pub을 상속합니다
학급 사무실이 술집을 확장했습니다{
         공개 기능 작동 중(){
echo "직원이 일하고 있어요!
";
}
}

// 객체 유형을 결정하는 방법
함수 수행($obj){
If($obj 인스턴스 오브 펍){
$obj->작업 중();
         }그 외{
echo "그런 개체는 없습니다!";
}
}

일 중(new Student()); // 학생은 수업 중입니다
일 중(새 사무실()); // 직원이 일하고 있습니다

이것이 다형성, 유연한 재사용의 특징입니다.


다른 방법 다형성 구현의 관점에서 보면 통일된 효과를 얻으려면 각 클래스가 상위 클래스의 메서드를 재정의해야 한다는 표준화에 지나지 않습니다. 클래스를 정의할 때 통합 메서드를 직접 추가하는 것도 가능합니다. 따라서 위의 예는 다음과 같이 구현할 수도 있습니다.


코드 복사 코드는 다음과 같습니다.

/**
* PHP 다형성
* 충타이 블로그
​*/

// 학생 클래스 정의
반 학생{
// 통합 메소드 pub
정의 공개 함수 pub(){
echo "학생들이 수업중이에요!
";
}
}

// 직원 클래스 정의
수업실{
// 통합 메소드 pub
정의          공개 함수 pub(){
echo "직원이 일하고 있어요!
";
}
}

// 객체 유형을 결정하는 방법
함수 수행($obj){
If($obj){
​​​​ // 클래스의 통합 메서드 호출
$obj->pub();
}그밖에{
echo '해당 객체가 없습니다'; }
}

일 중(new Student()); // 학생은 수업 중입니다
일 중(새 사무실()); // 직원이 일하고 있습니다

물론 위의 예는 다형성이 이런 방식으로 달성될 수 있다는 것을 의미하지는 않습니다. 결국 다형성은 복잡한 프로그래밍에서 유연한 재사용을 효과적으로 달성할 수 있습니다.
다형성은 프로그래밍 방법으로도 이해될 수 있으며 프로그래밍의 궁극적인 목표는 유연성, 다형성, 재사용 및 효율성에 지나지 않습니다.


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