다형성은 PHP 객체 지향 프로그래밍 언어 기능(OOPS 기능)의 좋은 개념 중 하나입니다. 다형성이라는 단어는 실제로 두 개의 그리스어 단어 "Poly"와 "Morph"에서 파생되었습니다. 폴리(Poly)는 '다수'라는 뜻이고 모프는 '형태'라는 뜻이다. 다양한 형태를 가질 수 있다는 뜻이다. 일반적으로 다형성은 클래스가 공통 인터페이스를 가지면서 다양한 기능을 갖는 객체 지향 프로그래밍 패턴입니다. 실제로 다형성에는 컴파일 타임과 런타임이라는 두 가지 유형이 있습니다. PHP는 함수 및 연산자 오버로드를 의미하는 컴파일 시간 다형성을 지원하지 않습니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
Class a{ //methods Public function b(){ //methods } } Class b extends a{ //methods Public function b(){ //methods which are in/not in the function of the class a. } }
설명:
위 구문에서는 2개의 클래스를 만들었습니다. 하나는 일반 클래스이고 다른 하나는 클래스를 확장하는 클래스이지만 서로 다른 기능에 대해 동일한 함수 이름/방법을 사용했습니다. 이를 폴리모핑이라고 합니다. 코딩에서 필요에 따라 다양한 기능을 가진 유사한 함수/메서드 이름을 사용할 수 있습니다.
PHP의 다형성은 런타임 다형성 개념을 기반으로 작동합니다. PHP에서 다형성은 실제로 컴파일 타임 다형성 개념이 아닌 런타임에 결정을 내림으로써 작동합니다. 그렇지 않으면 슈퍼 클래스의 하위 유형인 다수/다중 구현이 있다고 말할 수 있습니다. 런타임(함수 오버로딩) 개념은 PHP 프로그래밍 언어의 다형성 예
함수 오버로딩은 부모 클래스에서 동일한 시그니처(함수가 동일한 이름, 동일한 유형 및 인수 개수를 가짐)를 사용하여 새로 생성된 함수에서 클래스를 메서드 재정의라고 하는 함수로 파생시키는 것을 의미합니다. . 이러한 다형성 개념에서는 확장을 통해 함수를 생성할 수 있지만 다형성 및 상속 개념을 처리하기 위해서는 동일한 이름/유사한 명명 함수가 포함되어야 합니다. 클래스의 기능을 높여 프로그래밍 능력을 향상시키기 위해서는 공통 인터페이스 다형성이 필수입니다.
다음은 PHP의 다형성의 예입니다.
아래 예에서는 기본 클래스 "Shap1" 중 하나가 생성됩니다. 여기서는 세 개의 파생 클래스에서 Shap1 클래스를 상속하겠습니다. 클래스 이름은 Circle1, Triangle1 및 Elliipse1입니다. 각 클래스에는 PHP 프로그래밍 언어의 런타임 다형성을 완성하기 위한 draw 함수가 있습니다. 다음 호출 프로세스에서는 길이가 2인 배열을 생성할 것이며 모든 배열의 인덱스는 한 클래스의 객체를 생성하는 데 도움이 됩니다. 그런 다음 객체 배열 변수 “$Val1[$i1]”에 전달되는 “$i1” 값을 갖는 배열의 길이를 기반으로 실행될 루프를 사용할 것입니다. 따라서 3번씩 실행되며 각 클래스의 draw() 메소드를 이용하여 호출하게 됩니다.
코드:
<?php class Shap1 { function draw1(){} } class Circle1 extends Shap1 { function draw1() { print "Circle1 has been drawn.\n"; } } class Triangle1 extends Shap1 { function draw1() { print "Triangle1 has been drawn.\n"; } } class Ellipse1 extends Shap1 { function draw1() { print "Ellipse1 has been drawn."; } } $Val1=array(2); $Val1[0]=new Circle1(); $Val1[1]=new Triangle1(); $Val1[2]=new Ellipse1(); for($i1=0;$i1<3;$i1++) { $Val1[$i1]->draw1(); } ?>
출력:
인터페이스 도움말을 사용하여 다형성 개념을 구현한 예입니다. 인터페이스/인터페이스는 코드를 포함하지 않는 클래스를 제외하고는 모든 클래스와 매우 유사합니다. 인터페이스는 메소드 이름과 메소드 인수를 정의하는 데 도움이 되지만 여기서 메소드의 내용은 정의되지 않습니다. 모든 클래스에 의해 실행되는 인터페이스는 인터페이스의 특징을 이루는 모든 메소드에 의해 실행되어야 합니다.
여기 Machine1에는 calcTask1을 정의하는 모든 클래스가 있습니다. Circle1은 CallTask1() 메서드를 구현합니다. Rectangle1도 Machine 인터페이스를 구현하려고 시도하지만 calcTask1() 메서드의 다른 본문으로 정의합니다. 다형성은 작업을 계산하는 모든 메서드가 동일한 이름을 가져야 함을 말합니다. 세부 정보를 제공하지 않고 calcTask1()의 다른 이름을 호출하겠습니다. 여기서 작업을 계산하는 메소드의 이름이 중요합니다.
코드:
<?php interface Machine1 { public function calcTask1(); } class Circle1 implements Machine1 { private $radius1; public function __construct($radius1){ $this -> radius1 = $radius1; } public function calcTask1(){ return $this -> radius1 * $this -> radius1 * pi(); } } class Rectangle1 implements Machine1 { private $width1; private $height1; public function __construct($width1, $height1){ $this -> width1 = $width1; $this -> height1 = $height1; } public function calcTask1(){ return $this -> width1 * $this -> height1; } } $mycirc1 = new Circle1(3); $myrect1 = new Rectangle1(3,4); echo $mycirc1->calcTask1(); echo $myrect1->calcTask1(); ?>
출력:
In the below example a class “base11” is created with a function add1() with $a1 and $b1 variables. Then “$res1” variable is created which is used to store the multiplication of the two variables “$a1” and “$b1” and the echo statement is used to print if the function is called. Then Child1 class is used to extend the base11 class. In the extended class, again add1() variable is created to store the sum or the a1 and b1 variables. Then a new object is created and called by passing the variable values to the values $a1 and $b1 variables.
Code:
<?php class base11 { function add1($a1,$b1) { $res1=$a1*$b1; echo "Multiplication = ".$res1; } } class child1 extends base11 { function add1($a1,$b1) { $res1=$a1+$b1; echo "Sum = ".$res1; } } $obj= new child1(); $obj->add1(1000,500); ?>
Output:
In the below example a class “BaseClass11” is created with the public function “myMethod()” is created with the echo statement to mention that “BaseClass11 method” is called that. Then again DerivedClass11 is created to extend the BaseClass11 with the same name function “myMethod()” with the echo statement to print “DerivedClass11 method called” like that. We are calling the same/similar naming function in different classes. Then new object is created for the function/ method “myMethod()”.
Code:
<?php class BaseClass11 { public function myMethod11() { echo "BaseClass11 method called"; } } class DerivedClass11 extends BaseClass11 { public function myMethod11() { echo "DerivedClass11 method called"; } } function processClass11(BaseClass11 $c11) { $c11->myMethod11(); } $c11 = new DerivedClass11(); processClass11($c11); ?>
Output:
This is a guide to the Polymorphism in PHP. Here we discuss the what is the definition of Polymorphism and its Working along with its examples as well as Code Implementation. You can also go through our other suggested articles to learn more-
위 내용은 PHP의 다형성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!