객체 지향 프로그래밍에서 다형성은 동일한 메시지에 대해 서로 다른 객체가 다르게 응답하는 능력을 나타냅니다. PHP에서 다형성은 주로 인터페이스와 상속을 통해 달성됩니다. 본 글에서는 실제 코드 예제를 통해 PHP의 다형성 개념을 자세히 분석해 보겠습니다.
먼저,calculateArea 메소드를 포함하는 인터페이스 Shape를 생성합니다.
interface Shape {
public function calculateArea();
}
다음으로 Shape 인터페이스를 구현하는 두 개의 클래스 Circle과 Square를 만듭니다.
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return round(pi() * pow($this->radius, 2), 2);
}
}
class Square implements Shape {
private $sideLength;
public function __construct($sideLength) {
$this->sideLength = $sideLength;
}
public function calculateArea() {
return pow($this->sideLength, 2);
}
}
다음으로, Shape 인터페이스를 매개변수로 구현하는 객체를 받아들이고 그 계산Area 메소드를 호출하는 함수 getShapeArea를 정의합니다.
function getShapeArea(Shape $shape) {
return $shape->calculateArea();
}
이제 Circle 및 Square 객체를 생성하고 getShapeArea 함수를 사용하여 해당 영역을 계산할 수 있습니다.
$circle = new Circle(5);
$square = new Square(4);
echo "원의 면적:" . getShapeArea($circle) . ";";
echo "정사각형의 면적:" . getShapeArea($square) . "。";
이 예에서 Circle 및 Square 클래스는 모두 Shape 인터페이스를 구현하고 계산 영역 메서드를 재정의합니다. getShapeArea 함수에 다른 객체를 전달함으로써 다형성을 달성합니다. 동일한 함수가 다른 객체에 대해 다른 논리를 수행합니다.
PHP의 다형성은 인터페이스와 상속을 통해 구현되므로 서로 다른 개체가 동일한 메시지에 다르게 응답할 수 있습니다. 이 메커니즘은 코드 유연성과 확장성을 향상시킵니다. 다형성을 합리적으로 사용하면 코드 구조를 단순화하고, 코드 재사용성을 향상시키며, 객체 지향 프로그램의 유지 관리를 더욱 쉽게 만들 수 있습니다.