1. 다형성이란 무엇인가요?
다형성은 실제로 다양한 매개변수에 따라 다양한 메서드를 실행하는 것을 의미합니다.
2. PHP 유형 언어의 다형성은 매개변수 유형을 선언해야 합니다. 예를 들어 손전등 객체의 open 메소드에서 해당 매개변수가 파란색 조명만 될 수 있다고 선언하면 다른 조명을 전달할 수 없습니다. . 그러나 상위 클래스 렌더링을 사용하여 이를 다형성으로 만들 수 있습니다. 예를 들어 조명의 상위 클래스를 선언하고, 이 조명 상위 클래스에서 다른 색상의 조명을 상속하고 해당 매개변수를 상위 클래스 조명으로 선언한 다음 조명의 하위 클래스를 전달할 수 있습니다. 어느 쪽이든 이는 강력한 형식의 다형성입니다.
하지만 php는 약한 유형의 동적 언어이므로 무엇이든 전달할 수 있지만 php5.3 버전에서는 매개변수를 특정 객체로 선언할 수 있습니다. 매개변수가 특정 클래스 Object의 인스턴스화되도록 선언되면 이를 다형성으로 만들기 위해 상위 클래스 렌더링 방법을 사용해야 합니다. 객체 지향 언어에는 캡슐화, 상속, 그리고 다형성. PHP는 이 세 가지 특성을 가지고 있어야 합니다.
Encapsulation은 PHP에도 상속 기능이 있는 클래스 구성 프로세스입니다. 이 다형성만이 PHP에서는 매우 모호합니다. 그 이유는 PHP가 약한 유형의 언어이기 때문입니다.
Java의 다형성은 매우 명확하며 대략 두 가지 범주로 나눌 수 있습니다. 상위 클래스 참조는 하위 클래스 객체를 가리키고, 인터페이스 참조는 인터페이스를 구현하는 클래스 객체를 가리킵니다. Java에서 변수를 선언할 때 변수의 유형을 설정해야 상위 클래스 참조와 인터페이스 참조가 존재합니다. 이는 PHP에 반영되지 않습니다. PHP에서 변수를 선언할 때 변수에 대한 유형을 설정할 필요가 없습니다. 변수는 다른 데이터 유형을 가리킬 수 있습니다. 따라서 PHP에는 Java와 같은 다형성이 없습니다.
php에는 Java와 같은 명확한 다형성이 없습니다. 이는 PHP에 다형성이 없다는 의미는 아닙니다. 다음 예를 보세요: abstract class animal{
abstract function fun();
}
class cat extends animal{
function fun(){
echo "cat say miaomiao...";
}
}
class dog extends animal{
function fun(){
echo "dog say wangwang...";
}
}
function work($obj){
if($obj instanceof animal){
$obj -> fun();
}else{
echo "no function";
}
}
work(new dog());
work(new cat());
위 클래스는 추상 클래스로, 인터페이스와 인터페이스를 구현하는 클래스 객체도 적용할 수 있음을 보여줍니다.
추천 튜토리얼:
PHP 비디오 튜토리얼위 내용은 PHP는 다형성입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!