>백엔드 개발 >PHP 튜토리얼 >다형성이란 무엇입니까? PHP 객체 지향 다형성 예제 튜토리얼

다형성이란 무엇입니까? PHP 객체 지향 다형성 예제 튜토리얼

伊谢尔伦
伊谢尔伦원래의
2017-06-29 09:53:482418검색

다형성이란 무엇인가요?

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

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

일반적인 접근 방식

판단이 필요한 경우 사용

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    public function cla(){
            echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{                              
        public function Wor(){
            echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof student){ 
            $obj->cla();
        }elseif($obj instanceof office){
            $obj->wor();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

위 결과 출력:

Students are in class
Staff are work

이 일반적인 방법에는 단점이 있습니다. 즉, 개체가 많으면 if입니다. ..else... 길고 융통성이 없습니다.

다형성 연습

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

/**
 * PHP多态性
 */
 
// 定义一个公共类
class pub{
    protected function working(){
        echo "本方法需要在子类中重载!";
    }
}
 
// 定义学生类,继承公共类pub
class student 
extends
 pub{
    public function working(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类,继承公共类pub
class office extends pub{
        public function working(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof pub){ 
            $obj->working();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

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

기타 사례

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

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    // 定义统一的方法pub
    public function pub(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{
    // 定义统一的方法pub
        public function pub(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
    if($obj){
        // 调用类的统一方法
            $obj->pub();
    }else{
        echo &#39;没有这个对象&#39;;  
    }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班

다형성은 프로그래밍 방법으로도 이해될 수 있으며 프로그래밍의 궁극적인 목표는 유연성, 다형성, 재사용 및 효율성에 지나지 않습니다.

위 내용은 다형성이란 무엇입니까? PHP 객체 지향 다형성 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.